সেশন ASP.NET Core-এ একটি ফিচার যা ব্যবহারকারীর ডেটা সংরক্ষণ/স্টোর করতে সক্ষম করে।
সেশন ডেটা সার্ভারে ডিকশনারি আকারে সংরক্ষণ করে এবং SessionId কী হিসেবে ব্যবহার করা হয়। SessionId ক্লায়েন্টের কুকিতে সংরক্ষণ থাকে। SessionId কুকি প্রতিটি রিকোয়েস্টের সাথে পাঠানো হয়।
SessionId কুকি প্রতি ব্রাউজারের জন্য থাকে এবং এটি ব্রাউজারগুলোর মধ্যে শেয়ার করা যাবে না।
SessionId কুকির জন্য কোনো টাইমআউট নির্দিষ্ট করা থাকে না এবং ব্রাউজার সেশন শেষ হলে সেগুলো ডিলিট হয়ে যায়।
সার্ভার এন্ডে, সেশন একটি সীমিত সময়ের জন্য রিটেইন করা থাকে। সার্ভারে ডিফল্ট সেশন টাইমআউট ২০ মিনিট কিন্তু এটি কনফিগারযোগ্য।
Microsoft.AspNetCore.Session প্যাকেজ ASP.NET Core-এ সেশন ম্যানেজ করার জন্য মিডলওয়্যার প্রদান করে। আমাদের অ্যাপ্লিকেশনে সেশন ব্যবহার করতে হলে, এই প্যাকেজটি project.json ফাইলে ডিপেন্ডেন্সি হিসেবে যোগ করতে হবে।
পরবর্তী ধাপ হল Startup ক্লাসে সেশন কনফিগার করা।
Startup ক্লাসের ConfigureServices মেথডে "AddSession" মেথড কল করতে হবে।
"AddSession" মেথডের একটি ওভারলোড মেথড রয়েছে, যা আইডেল টাইমআউট, কুকি নাম এবং কুকি ডোমেনের মতো বিভিন্ন সেশন অপশন গ্রহণ করে।
যদি আমরা সেশন অপশন পাস না করি, তবে সিস্টেম ডিফল্ট অপশনগুলো নেবে।
উদাহরণ
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);
});
}
}
সেশন অ্যাক্সেস করার পদ্ধতি
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();
}
}