کتابخانه‌ی استاندارد · شبکه

نشست net/http/session

نشست کاربر با کوکی: نگه داشتن داده میان درخواست‌ها و توکن CSRF.

واردسازی شبکه.اچ تی تی پی.نشست

نشست داده‌ی هر بازدیدکننده را روی سرور نگه می‌دارد و فقط یک شناسه‌ی تصادفی را در کوکی HttpOnly به مرورگر می‌دهد. برای ورود کاربر، سبد خرید و توکن فرم در سایتی که با اچ تی تی پی ساخته شده به کار می‌رود. وقتی کارخواه مرورگر نیست، یا چند سرور باید یک ورود را بدون حافظه‌ی مشترک بپذیرند، معمولاً توکن امضاشده‌ی جی دبلیو تی گزینه‌ی بهتری است.

روند کار در گرداننده: شروع نشست بازدیدکننده را از روی کوکی پیدا می‌کند یا تازه می‌سازد (و کوکی را می‌گذارد)، مقدارها را با مقدار و تنظیم مقدار می‌خوانید و تغییر می‌دهید، و ذخیره نشست را برمی‌گرداند. مقدارها رشته‌اند. نشست پس از max_age ثانیه بی‌درخواست منقضی می‌شود و هر درخواستی که آن را پیدا کند شمارش را از نو شروع می‌کند.

اشتباه‌های رایج:

  • فراموش کردن ذخیره. شروع یک رونوشت برمی‌گرداند و تغییرها فقط با ذخیره به انبار می‌رسند.
  • نگه داشتن رشته‌های درخواست. پارامتر زمینه، فرم زمینه و مانند آن‌ها با برگشتن گرداننده آزاد می‌شوند، پس پیش از ذخیره با رشته.رونوشت رونوشتشان را بگیرید (سبد خرید را ببینید).
  • صدا نزدن بازتولید پس از ورود، که شناسه‌ای را که مهاجم ممکن است در مرورگر کاشته باشد معتبر نگه می‌دارد.
  • انتظار ماندگاری نشست‌ها. نشست‌ها در حافظه‌ی همین فرایند هستند: راه‌اندازی دوباره همه را بیرون می‌کند و دو فرایند سرور آن‌ها را با هم شریک نیستند. دو درخواست هم‌زمان از یک بازدیدکننده هر کدام رونوشت خودش را ذخیره می‌کند و ذخیرهی دیرتر برنده است.

ورود و خروج

شکل معمول: گرداننده‌ی ورود گذرواژه را بررسی می‌کند، بازتولید را صدا می‌زند تا کاربر شناسه‌ی تازه بگیرد، با تنظیم مقدار نگه می‌دارد که او کیست و به صفحه‌ی دیگری می‌فرستد. هر صفحه‌ی محافظت‌شده شروع را صدا می‌زند و مقدار دارد را بررسی می‌کند. خروج با پایان انجام می‌شود که نشست را روی سرور پاک می‌کند و کوکی را هم پاک می‌کند.

net-http-session-login.salam
واردسازی شبکه.اچ تی تی پی
واردسازی شبکه.اچ تی تی پی.نشست
واردسازی شبکه.مسیریاب

تابع ورود(ز: صحیح۶۴):
    اگر اچ تی تی پی.فرم(ز، "user") نابرابر "sara" یا اچ تی تی پی.فرم(ز، "password") نابرابر "open sesame":
        اچ تی تی پی.تنظیم وضعیت(ز، ۴۰۱)
        اچ تی تی پی.متن(ز، "نام کاربری یا گذرواژه نادرست است")
        برگشت
    پایان
    ناپایا ن := نشست.شروع(ز)
    نشست.بازتولید(ز، ن)
    نشست.تنظیم مقدار(ن، "user"، "sara")
    نشست.ذخیره(ن)
    اچ تی تی پی.تغییرمسیر(ز، "/me")
پایان

تابع من(ز: صحیح۶۴):
    ن := نشست.شروع(ز)
    اگر وارونه نشست.مقدار دارد(ن، "user"):
        اچ تی تی پی.تنظیم وضعیت(ز، ۴۰۱)
        اچ تی تی پی.متن(ز، "لطفا وارد شوید")
        برگشت
    پایان
    اچ تی تی پی.متن(ز، "سلام " + نشست.مقدار(ن، "user"))
پایان

تابع خروج(ز: صحیح۶۴):
    نشست.پایان(ز)
    اچ تی تی پی.متن(ز، "خارج شدید")
پایان

تابع ریشه:
    ناپایا م := مسیریاب.مسیریاب جدید()
    مسیریاب.ارسال(م، "/login"، ورود)
    مسیریاب.دریافت(م، "/me"، من)
    مسیریاب.ارسال(م، "/logout"، خروج)
    ناپایا س := اچ تی تی پی.سرور جدید(۱۹۷۹۰)
    اچ تی تی پی.استفاده(س، م)
    _ := اچ تی تی پی.اجرا در پس زمینه(س)
    پایه := "http://127.0.0.1:19790"
    ناپایا مرورگر := اچ تی تی پی.کارخواه جدید()
    مرورگر.تنظیم سرصفحه("Content-Type"، "application/x-www-form-urlencoded")
    سرچاپ اچ تی تی پی.بدنه(مرورگر.دریافت(پایه + "/me"))
    بد := مرورگر.ارسال(پایه + "/login"، "user=sara&password=guess")
    سرچاپ اچ تی تی پی.وضعیت(بد)، اچ تی تی پی.بدنه(بد)
    خوب := مرورگر.ارسال(پایه + "/login"، "user=sara&password=open+sesame")
    سرچاپ اچ تی تی پی.وضعیت(خوب)، اچ تی تی پی.دریافت سرصفحه(خوب، "location")
    سرچاپ اچ تی تی پی.بدنه(مرورگر.دریافت(پایه + "/me"))
    سرچاپ اچ تی تی پی.بدنه(مرورگر.ارسال(پایه + "/logout"، ""))
    سرچاپ اچ تی تی پی.بدنه(مرورگر.دریافت(پایه + "/me"))
پایان
خروجیلطفا وارد شوید 401 نام کاربری یا گذرواژه نادرست است 302 /me سلام sara خارج شدید لطفا وارد شوید

اچ تی تی پی.کارخواه جدید کوکی‌ها را میان درخواست‌ها مثل مرورگر نگه می‌دارد؛ برای همین /me دوم ورود را می‌بیند. یک اچ تی تی پی.دریافت ساده کوکی نمی‌فرستد و همیشه بازدیدکننده‌ی تازه به نظر می‌رسد.

محافظت از فرم‌ها با توکن CSRF

مرورگر کوکی نشست را با هر درخواست به سایت شما می‌فرستد، حتی درخواستی که فرمی در سایت دیگر آغاز کرده است. توکن CSRF جلوی این را می‌گیرد: توکن سی اس آر اف یک توکن تصادفی در نشست می‌گذارد، شما آن را در یک فیلد پنهان قرار می‌دهید، و گرداننده‌ای که فرم را می‌گیرد آن را با تایید سی اس آر اف بررسی می‌کند. فرم جعلی توکن را نمی‌داند و رد می‌شود.

net-http-session-csrf.salam
واردسازی شبکه.اچ تی تی پی
واردسازی شبکه.اچ تی تی پی.نشست
واردسازی شبکه.مسیریاب

تابع فرم(ز: صحیح۶۴):
    ناپایا ن := نشست.شروع(ز)
    توکن := نشست.توکن سی اس آر اف(ن)
    نشست.ذخیره(ن)
    اچ تی تی پی.اچ تی ام ال(ز، `<form method="post" action="/email"><input type="hidden" name="csrf" value="` + توکن + `"><input name="email"></form>`)
پایان

تابع تغییر ایمیل(ز: صحیح۶۴):
    ن := نشست.شروع(ز)
    اگر وارونه نشست.تایید سی اس آر اف(ن، اچ تی تی پی.فرم(ز، "csrf")):
        اچ تی تی پی.تنظیم وضعیت(ز، ۴۰۳)
        اچ تی تی پی.متن(ز، "فرم منقضی شده است، صفحه را دوباره باز کنید")
        برگشت
    پایان
    اچ تی تی پی.متن(ز، "ایمیل به " + اچ تی تی پی.فرم(ز، "email") + " تغییر کرد")
پایان

تابع توکن صفحه(صفحه: رشته): رشته:
    آغاز := صفحه.بیاب(`value="`) + ۷
    باقی := صفحه.زیررشته(آغاز، صفحه.طول() - آغاز)
    برگشت باقی.زیررشته(۰، باقی.بیاب(`"`))
پایان

تابع ریشه:
    ناپایا م := مسیریاب.مسیریاب جدید()
    مسیریاب.دریافت(م، "/email"، فرم)
    مسیریاب.ارسال(م، "/email"، تغییر ایمیل)
    ناپایا س := اچ تی تی پی.سرور جدید(۱۹۷۹۱)
    اچ تی تی پی.استفاده(س، م)
    _ := اچ تی تی پی.اجرا در پس زمینه(س)
    نشانی := "http://127.0.0.1:19791/email"
    ناپایا مرورگر := اچ تی تی پی.کارخواه جدید()
    مرورگر.تنظیم سرصفحه("Content-Type"، "application/x-www-form-urlencoded")
    توکن := توکن صفحه(اچ تی تی پی.بدنه(مرورگر.دریافت(نشانی)))
    سرچاپ "طول توکن:"، توکن.طول()
    جعلی := مرورگر.ارسال(نشانی، "email=evil%40example.com")
    سرچاپ اچ تی تی پی.وضعیت(جعلی)، اچ تی تی پی.بدنه(جعلی)
    واقعی := مرورگر.ارسال(نشانی، "csrf=" + توکن + "&email=sara%40example.com")
    سرچاپ اچ تی تی پی.وضعیت(واقعی)، اچ تی تی پی.بدنه(واقعی)
پایان
خروجیطول توکن: 48 403 فرم منقضی شده است، صفحه را دوباره باز کنید 200 ایمیل به [email protected] تغییر کرد

پس از توکن سی اس آر اف، ذخیره را صدا بزنید، چون بار اول توکن در رونوشت شما از نشست ساخته می‌شود.

نگه داشتن داده میان درخواست‌ها: سبد خرید

مقدارها رشته‌اند، پس عددها با تبدیل.رشته به عدد رفت و برگشت می‌کنند. هر بازدیدکننده نشست جداگانه دارد، پس دو کارخواه که هم‌زمان سبد پر می‌کنند هرگز کالاهای هم را نمی‌بینند. پاک کردن مقادیر نشست را خالی می‌کند اما شناسه‌ی کاربر را نگه می‌دارد.

net-http-session-cart.salam
واردسازی شبکه.اچ تی تی پی
واردسازی شبکه.اچ تی تی پی.نشست
واردسازی شبکه.مسیریاب
واردسازی تبدیل
واردسازی رشته

تابع افزودن(ز: صحیح۶۴):
    کالا := رشته.رونوشت(اچ تی تی پی.پارامتر(ز، "item"))
    ناپایا ن := نشست.شروع(ز)
    ناپایا تعداد := ۰
    اگر نشست.مقدار دارد(ن، کالا):
        تعداد = تبدیل.رشته به عدد(نشست.مقدار(ن، کالا))
    پایان
    نشست.تنظیم مقدار(ن، کالا، "" + (تعداد + ۱))
    نشست.ذخیره(ن)
    اچ تی تی پی.متن(ز، کالا + " افزوده شد")
پایان

تابع سبد(ز: صحیح۶۴):
    ن := نشست.شروع(ز)
    ناپایا متن := ""
    هر کالا در ["tea"، "bread"، "cheese"]:
        اگر نشست.مقدار دارد(ن، کالا):
            متن = متن + (متن برابر "" ? "" : "، ") + کالا + " x" + نشست.مقدار(ن، کالا)
        پایان
    پایان
    اچ تی تی پی.متن(ز، متن برابر "" ? "سبد خالی است" : متن)
پایان

تابع خالی کردن(ز: صحیح۶۴):
    ناپایا ن := نشست.شروع(ز)
    نشست.پاک کردن مقادیر(ن)
    نشست.ذخیره(ن)
    اچ تی تی پی.متن(ز، "خالی شد")
پایان

تابع ریشه:
    ناپایا م := مسیریاب.مسیریاب جدید()
    مسیریاب.ارسال(م، "/cart/:item"، افزودن)
    مسیریاب.دریافت(م، "/cart"، سبد)
    مسیریاب.حذف(م، "/cart"، خالی کردن)
    ناپایا س := اچ تی تی پی.سرور جدید(۱۹۷۹۲)
    اچ تی تی پی.استفاده(س، م)
    _ := اچ تی تی پی.اجرا در پس زمینه(س)
    پایه := "http://127.0.0.1:19792/cart"
    ناپایا سارا := اچ تی تی پی.کارخواه جدید()
    ناپایا رضا := اچ تی تی پی.کارخواه جدید()
    _ := سارا.ارسال(پایه + "/tea"، "")
    _ := سارا.ارسال(پایه + "/tea"، "")
    _ := سارا.ارسال(پایه + "/bread"، "")
    _ := رضا.ارسال(پایه + "/cheese"، "")
    سرچاپ "سارا:"، اچ تی تی پی.بدنه(سارا.دریافت(پایه))
    سرچاپ "رضا:"، اچ تی تی پی.بدنه(رضا.دریافت(پایه))
    سرچاپ اچ تی تی پی.بدنه(سارا.حذف(پایه))
    سرچاپ "سارا:"، اچ تی تی پی.بدنه(سارا.دریافت(پایه))
    سرچاپ "رضا:"، اچ تی تی پی.بدنه(رضا.دریافت(پایه))
پایان
خروجیسارا: tea x2، bread x1 رضا: cheese x1 خالی شد سارا: سبد خالی است رضا: cheese x1

به رشته.رونوشت دور پارامتر زمینه دقت کنید. مقدارهایی که از درخواست خوانده می‌شوند وقتی گرداننده برمی‌گردد آزاد می‌شوند و نشست از درخواست بیشتر عمر می‌کند؛ پس هر چیزی از درخواست را پیش از آنکه کلید یا مقدار نشست کنید رونوشت بگیرید. بدون رونوشت، کلیدهای سبد به حافظه‌ی آزادشده اشاره می‌کنند و سبد خالی به نظر می‌رسد.

تنظیمات کوکی و طول عمر

پیکربندی نام کوکی، مدت زنده ماندن نشست بدون فعالیت، فقط‌HTTPS بودن کوکی و حالت SameSite آن را تعیین می‌کند. آن را یک بار و پیش از راه افتادن سرور صدا بزنید. در سایتی که روی HTTPS است برای secure مقدار درست بدهید؛ Strict کوکی را از هر درخواستی که از سایت دیگری آغاز شده دور نگه می‌دارد و Lax، که پیش‌فرض است، وقتی کاربر روی پیوندی می‌زند آن را می‌فرستد.

net-http-session-config.salam
واردسازی شبکه.اچ تی تی پی
واردسازی شبکه.اچ تی تی پی.نشست
واردسازی شبکه.مسیریاب
واردسازی رشته

تابع سلام(ز: صحیح۶۴):
    ن := نشست.شروع(ز)
    اچ تی تی پی.متن(ز، "نشست " + (ن.شناسه.طول() > ۰))
پایان

تابع ریشه:
    نشست.پیکربندی("shop_sid"، ۱۸۰۰، درست، "Strict")
    ناپایا م := مسیریاب.مسیریاب جدید()
    مسیریاب.دریافت(م، "/"، سلام)
    ناپایا س := اچ تی تی پی.سرور جدید(۱۹۷۹۳)
    اچ تی تی پی.استفاده(س، م)
    _ := اچ تی تی پی.اجرا در پس زمینه(س)
    پ := اچ تی تی پی.دریافت("http://127.0.0.1:19793/")
    سرچاپ اچ تی تی پی.بدنه(پ)
    خط := اچ تی تی پی.خطوط کوکی(پ).دریافت(۰)
    هر تکه در رشته.تفکیک کردن(خط، "; "):
        اگر تکه.شروع با("shop_sid="):
            سرچاپ "shop_sid=<شناسه‌ی تصادفی>"
        وگرنه وارونه تکه.شروع با("Expires="):
            سرچاپ تکه
        پایان
    پایان
    ناپایا ن := نشست.جدید()
    نشست.تنظیم مقدار(ن، "theme"، "dark")
    نشست.ذخیره(ن)
    سرچاپ "نگه‌داری به مدت"، ن.بیشترین عمر، "ثانیه"
    سرچاپ "پاک‌شده‌ها:"، نشست.پاکسازی منقضی شده ها()
    نشست.نابودسازی(ن.شناسه)
    ناپایا یافت := درست
    _ := نشست.دریافت(ن.شناسه، یافت)
    سرچاپ "پس از نابودسازی:"، یافت
پایان
خروجینشست true shop_sid=<شناسه‌ی تصادفی> Path=/ Max-Age=1800 SameSite=Strict Secure HttpOnly نگه‌داری به مدت 1800 ثانیه پاک‌شده‌ها: 0 پس از نابودسازی: false

کوکی همیشه HttpOnly است، پس اسکریپت‌های صفحه نمی‌توانند شناسه را بخوانند. نشست‌های منقضی در هر صد بار صدا زدن جدید یا دریافت پاک می‌شوند؛ پاکسازی منقضی شده ها همین کار را فوری انجام می‌دهد و شمار پاک‌شده‌ها را برمی‌گرداند. نشست‌ها در حافظه‌ی یک فرایند زندگی می‌کنند، پس با راه‌اندازی دوباره همه خارج می‌شوند و دو نسخه‌ی سرور پشت توزیع‌کننده‌ی بار آن‌ها را با هم شریک نیستند. برای این کار داده را در پایگاه داده‌ای مثل ردیس نگه دارید.

گونه‌ها

داده نشست SessionData

ساختار داده نشست
کلیدها و مقدارهای نشست.
نامانگلیسیگونهتوضیح
مقدارهاitemsنگاشت<رشته، رشته>مقدارها.
net-http-session-Session.salam
واردسازی شبکه.اچ تی تی پی
واردسازی شبکه.اچ تی تی پی.نشست
واردسازی شبکه.مسیریاب
واردسازی تبدیل

تابع بازدید(ز: صحیح۶۴):
    ناپایا ن := نشست.شروع(ز)
    ناپایا شمار := ۱
    اگر نشست.مقدار دارد(ن، "visits"):
        شمار = تبدیل.رشته به عدد(نشست.مقدار(ن، "visits")) + ۱
    پایان
    نشست.تنظیم مقدار(ن، "visits"، "" + شمار)
    نشست.ذخیره(ن)
    اچ تی تی پی.متن(ز، "بازدید " + شمار)
پایان

تابع ورود(ز: صحیح۶۴):
    ناپایا ن := نشست.شروع(ز)
    نشست.بازتولید(ز، ن)
    نشست.تنظیم مقدار(ن، "user"، "ali")
    توکن := نشست.توکن سی اس آر اف(ن)
    نشست.ذخیره(ن)
    اچ تی تی پی.متن(ز، "" + نشست.تایید سی اس آر اف(ن، توکن) + " " + نشست.تایید سی اس آر اف(ن، "x"))
پایان

تابع خروج(ز: صحیح۶۴):
    نشست.پایان(ز)
    اچ تی تی پی.متن(ز، "خداحافظ")
پایان

تابع ریشه:
    نشست.پیکربندی("sid"، ۳۶۰۰، نادرست، "Lax")
    ناپایا م := مسیریاب.مسیریاب جدید()
    مسیریاب.دریافت(م، "/"، بازدید)
    مسیریاب.ارسال(م، "/login"، ورود)
    مسیریاب.ارسال(م، "/logout"، خروج)
    ناپایا س := اچ تی تی پی.سرور جدید(۱۹۶۰۶)
    اچ تی تی پی.استفاده(س، م)
    _ := اچ تی تی پی.اجرا در پس زمینه(س)
    ناپایا ک := اچ تی تی پی.کارخواه جدید()
    پایه := "http://127.0.0.1:19606"
    سرچاپ اچ تی تی پی.بدنه(ک.دریافت(پایه + "/"))
    سرچاپ اچ تی تی پی.بدنه(ک.دریافت(پایه + "/"))
    سرچاپ اچ تی تی پی.بدنه(ک.ارسال(پایه + "/login"، ""))
    سرچاپ اچ تی تی پی.بدنه(ک.دریافت(پایه + "/"))
    سرچاپ اچ تی تی پی.بدنه(ک.ارسال(پایه + "/logout"، ""))
    سرچاپ اچ تی تی پی.بدنه(ک.دریافت(پایه + "/"))
    ناپایا ن := نشست.جدید()
    نشست.تنظیم مقدار(ن، "a"، "1")
    نشست.تنظیم مقدار(ن، "b"، "2")
    سرچاپ نشست.حذف مقدار(ن، "a")، ن.داده.مقدارها.اندازه()
    نشست.ذخیره(ن)
    ناپایا یافت := نادرست
    ب := نشست.دریافت(ن.شناسه، یافت)
    سرچاپ یافت، نشست.مقدار(ب، "b")، ب.بیشترین عمر، ن.شناسه.طول() > ۰
    نشست.پاک کردن مقادیر(ن)
    نشست.نابودسازی(ن.شناسه)
    _ := نشست.دریافت(ن.شناسه، یافت)
    سرچاپ یافت، نشست.پاکسازی منقضی شده ها() >= ۰
    سرچاپ نشست.نام پیش فرض کوکی، نشست.حداکثر عمر پیش فرض
پایان
خروجیبازدید 1 بازدید 2 true false بازدید 3 خداحافظ بازدید 1 true 1 true 2 3600 true false true salam_sid 86400

نشست Session

ساختار نشست
نشست یک کاربر.
نامانگلیسیگونهتوضیح
شناسهidرشته = ""شناسه‌ی تصادفی که در کوکی است.
دادهdataداده نشستداده‌های نشست.
زمان ساختcreated_atصحیح۶۴ = 0زمان ساختن.
آخرین استفادهlast_seenصحیح۶۴ = 0آخرین استفاده.
بیشترین عمرmax_ageصحیح = 0چند ثانیه نشست بدون درخواست زنده می‌ماند؛ صفر یا کمتر یعنی هرگز منقضی نمی‌شود.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: net-http-session-Session.salam

پایاها و متغیرها

نام پیش فرض کوکی DefaultCookieName

پایا نام پیش فرض کوکی: رشته = "salam_sid"
نام پیش‌فرض کوکی نشست.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: net-http-session-Session.salam

حداکثر عمر پیش فرض DefaultMaxAge

پایا حداکثر عمر پیش فرض: صحیح۳۲ = 86400
عمر پیش‌فرض: یک روز.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: net-http-session-Session.salam

تابع‌ها

پیکربندی Configure

تابع پیکربندی(cookie_name: رشته، max_age_seconds: صحیح، secure: منطقی، same_site: رشته)
نام کوکی، عمر بی‌کاری به ثانیه، فقط HTTPS بودن کوکی و حالت SameSite را برای کل برنامه تعیین می‌کند. نشست‌هایی که پیش‌تر ساخته شده‌اند عمر قبلی را نگه می‌دارند، پس پیش از شروع سرور صدایش بزنید.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: net-http-session-Session.salam

پاکسازی منقضی شده ها CleanupExpired

تابع پاکسازی منقضی شده ها(): صحیح
نشست‌های منقضی را پاک می‌کند و تعدادشان را برمی‌گرداند.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: net-http-session-Session.salam

جدید New

تابع جدید(): نشست
نشست تازه با شناسه‌ی تصادفی.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: net-http-session-Session.salam

دریافت Get

تابع دریافت(id: رشته، ok &: منطقی): نشست
نشست را با شناسه پیدا می‌کند و زمان آخرین استفاده‌اش را اکنون می‌گذارد؛ اگر نباشد یا منقضی شده باشد، ok نادرست است.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: net-http-session-Session.salam

ذخیره Save

تابع ذخیره(s: نشست)
نشست را در انبار می‌نویسد و جای نسخه‌ی قبلی را می‌گیرد.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: net-http-session-Session.salam

نابودسازی Destroy

تابع نابودسازی(id: رشته)
نشست را با شناسه پاک می‌کند.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: net-http-session-Session.salam

مقدار Value

تابع مقدار(s: نشست، key: رشته): رشته
مقدار یک کلید؛ اگر نباشد، رشته‌ی خالی.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: net-http-session-Session.salam

مقدار دارد HasValue

تابع مقدار دارد(s: نشست، key: رشته): منطقی
اگر کلید باشد، درست برمی‌گرداند.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: net-http-session-Session.salam

تنظیم مقدار SetValue

تابع تنظیم مقدار(s &: نشست، key: رشته، value: رشته)
مقدار کلید را تنظیم می‌کند.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: net-http-session-Session.salam

حذف مقدار DeleteValue

تابع حذف مقدار(s &: نشست، key: رشته): منطقی
کلید را برمی‌دارد و می‌گوید بود یا نه.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: net-http-session-Session.salam

پاک کردن مقادیر ClearValues

تابع پاک کردن مقادیر(s &: نشست)
همه‌ی مقدارها را پاک می‌کند.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: net-http-session-Session.salam

شروع Start

تابع شروع(h: صحیح۶۴): نشست
نشست کاربر این درخواست را از کوکی پیدا می‌کند یا تازه می‌سازد و کوکی را تنظیم می‌کند.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: net-http-session-Session.salam

پایان End

تابع پایان(h: صحیح۶۴)
نشست را پاک می‌کند و کوکی را در مرورگر منقضی می‌کند؛ برای خروج.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: net-http-session-Session.salam

بازتولید Regenerate

تابع بازتولید(h: صحیح۶۴، s &: نشست)
به نشست شناسه‌ی تازه می‌دهد، شناسه‌ی قبلی را پاک می‌کند و کوکی تازه را می‌گذارد؛ مقدارها می‌مانند. پس از ورود صدایش بزنید.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: net-http-session-Session.salam

توکن سی اس آر اف CSRFToken

تابع توکن سی اس آر اف(s &: نشست): رشته
توکن CSRF نشست را برمی‌گرداند و اگر نباشد، می‌سازد؛ آن را در فرم‌ها بگذارید.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: net-http-session-Session.salam

تایید سی اس آر اف CSRFVerify

تابع تایید سی اس آر اف(s: نشست، token: رشته): منطقی
اگر توکن با توکن نشست یکی باشد درست برمی‌گرداند و مقایسه را در زمان ثابت انجام می‌دهد؛ اگر یکی خالی باشد نادرست است.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: net-http-session-Session.salam