Session เป็นฟีเจอร์ใน ASP.NET Core ที่ช่วยให้เราบันทึก/เก็บข้อมูลผู้ใช้ได้ Session เก็บข้อมูลในรูปแบบ Dictionary บน Server และใช้ SessionId เป็น Key SessionId จะถูกเก็บไว้ที่ฝั่ง Client ในรูปแบบ Cookie และจะถูกส่งมาพร้อมกับทุกคำขอ
Cookie SessionId เป็นต่อ Browser และไม่สามารถแชร์ระหว่าง Browser ต่างๆ ได้ ไม่มี Timeout ระบุสำหรับ Cookie SessionId และจะถูกลบเมื่อ Browser session จบลง ที่ฝั่ง Server Session จะถูกเก็บไว้เป็นเวลาจำกัด Timeout เริ่มต้นของ Session ที่ Server คือ 20 นาที แต่สามารถกำหนดค่าได้
แพ็กเกจ Microsoft.AspNetCore.Session จะจัดเตรียม Middleware สำหรับจัดการ Session ใน ASP.NET Core เพื่อใช้ Session ในแอปพลิเคชันของเรา เราต้องเพิ่มแพ็กเกจนี้เป็น Dependency
ขั้นตอนการกำหนดค่า Session
- เรียกเมธอด
AddSessionในเมธอดConfigureServicesของคลาส Startup - เมธอด
AddSessionมี overload ที่รับตัวเลือก Session ต่างๆ เช่น Idle Timeout, Cookie Name, Cookie Domain ฯลฯ - หากไม่ส่งตัวเลือก Session ระบบจะใช้ค่าเริ่มต้น
- เรียก
app.UseSession()ในเมธอดConfigureก่อนapp.UseMvc()
ตัวอย่างการกำหนดค่า
public class Startup {
public void Configure(IApplicationBuilder app) {
app.UseSession();
app.UseMvc();
app.Run(context => {
return context.Response.WriteAsync("Hello World!");
});
}
public void ConfigureServices(IServiceCollection services) {
services.AddMvc();
services.AddSession(options => {
options.IdleTimeout = TimeSpan.FromMinutes(60);
});
}
}
วิธีเข้าถึง Session
public class HomeController : Controller {
[Route("home/index")]
public IActionResult Index() {
HttpContext.Session.SetString("product", "laptop");
return View();
}
[Route("home/GetSessionData")]
public IActionResult GetSessionData() {
ViewBag.data = HttpContext.Session.GetString("product");
return View();
}
}
เมธอดหลักสำหรับจัดการ Session:
SetString(key, value)- บันทึกข้อมูลสตริงGetString(key)- อ่านข้อมูลสตริงSetInt32(key, value)- บันทึกข้อมูลตัวเลขGetInt32(key)- อ่านข้อมูลตัวเลขRemove(key)- ลบข้อมูล SessionClear()- ล้าง Session ทั้งหมด