ASP.NET Core-এ সেশন ব্যবস্থাপনা ব্যবহারকারীর তথ্য সংরক্ষণ এবং ব্যবহারকারীর পরবর্তী রিকোয়েস্টগুলোর জন্য তা পুনরায় ব্যবহার করার একটি কার্যকরী পদ্ধতি। সেশন ব্যবস্থাপনা দ্বারা, আপনি ক্লায়েন্টের সেশনকে ট্র্যাক করতে পারেন, যা একটি নির্দিষ্ট সময়ের জন্য তথ্য সংরক্ষণ করে এবং ব্যবহারকারীর প্রতিটি রিকোয়েস্টে তথ্য অ্যাক্সেস করা সম্ভব হয়।
সেশন হল একটি সার্ভার সাইড প্রযুক্তি যা ক্লায়েন্টের (ব্যবহারকারীর) তথ্য সংরক্ষণ করতে সাহায্য করে। ব্যবহারকারী সাইটে প্রবেশ করার সময় একটি সেশন আইডি তৈরি হয় এবং সেই আইডি ক্লায়েন্টের ব্রাউজারে কুকি (cookie) হিসেবে সংরক্ষিত থাকে। সেশন তথ্য সাধারণত সার্ভার সাইডে রাখা হয়, যা নিরাপদে তথ্য সংরক্ষণ করতে সহায়তা করে।
ASP.NET Core-এ সেশন ব্যবস্থাপনা সহজেই কনফিগার করা যায় এবং এটি ডেটা, শপিং কার্ট, ইউজার অথেনটিকেশন স্টেট এবং অন্যান্য সাময়িক তথ্য সংরক্ষণে ব্যবহৃত হয়।
ASP.NET Core-এ সেশন ব্যবস্থাপনা শুরু করতে হলে প্রথমে সেশন সার্ভিসকে কনফিগার করতে হবে এবং তারপর সেশন ডেটা অ্যাক্সেস করতে হবে।
আপনার Startup.cs ফাইলে সেশন সার্ভিস কনফিগার করতে হবে।
public void ConfigureServices(IServiceCollection services)
{
// সেশন ব্যবস্থাপনা কনফিগার করা
services.AddDistributedMemoryCache(); // ইন-মেমরি ক্যাশ
services.AddSession(options =>
{
options.IdleTimeout = TimeSpan.FromMinutes(30); // সেশন টাইমআউট ৩০ মিনিট
options.Cookie.HttpOnly = true; // শুধুমাত্র HTTP রিকোয়েস্টের মাধ্যমে অ্যাক্সেসযোগ্য
options.Cookie.IsEssential = true; // কুকি প্রয়োজনীয়
});
services.AddControllersWithViews();
}
AddDistributedMemoryCache()
: এটি ইন-মেমরি ক্যাশ তৈরি করে যা সেশন ডেটা সংরক্ষণ করবে।AddSession()
: সেশন ব্যবস্থাপনা সক্ষম করে এবং সেশন আইডি সম্পর্কিত কুকি কনফিগার করে।IdleTimeout
: এটি সেশনের সময়সীমা নির্ধারণ করে। ৩০ মিনিট পর সেশন শেষ হয়ে যাবে।এখন, Configure() মেথডে সেশন ব্যবস্থাপনাকে middleware হিসেবে অন্তর্ভুক্ত করতে হবে:
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
else
{
app.UseExceptionHandler("/Home/Error");
app.UseHsts();
}
app.UseHttpsRedirection();
app.UseStaticFiles();
// সেশন middleware যোগ করা
app.UseSession();
app.UseRouting();
app.UseAuthorization();
app.MapControllerRoute(
name: "default",
pattern: "{controller=Home}/{action=Index}/{id?}");
}
app.UseSession()
ব্যবহার করার মাধ্যমে সেশন ম্যানেজমেন্ট চালু হয়, যা রিকোয়েস্টে সেশন ডেটা সংরক্ষণ এবং অ্যাক্সেস করতে সাহায্য করে।
কোনো ভিউ বা কন্ট্রোলার থেকে সেশনে ডেটা সংরক্ষণ করতে পারেন। সেশন ডেটা HttpContext.Session
এর মাধ্যমে সংরক্ষণ এবং পুনরুদ্ধার করা যায়।
public class HomeController : Controller
{
public IActionResult Index()
{
// সেশনে ডেটা সংরক্ষণ
HttpContext.Session.SetString("UserName", "John Doe");
return View();
}
}
এখানে, SetString()
মেথড ব্যবহার করে "UserName" কী দিয়ে একটি স্ট্রিং ডেটা সেশন-এ সংরক্ষণ করা হচ্ছে।
আপনি সেশন থেকে ডেটা পুনরুদ্ধার করতে GetString()
বা অন্যান্য টাইপ-স্পেসিফিক মেথড ব্যবহার করতে পারেন।
public class HomeController : Controller
{
public IActionResult About()
{
// সেশন থেকে ডেটা পুনরুদ্ধার
string userName = HttpContext.Session.GetString("UserName");
if (userName != null)
{
ViewData["Message"] = $"Welcome, {userName}";
}
else
{
ViewData["Message"] = "Welcome, Guest";
}
return View();
}
}
এখানে GetString()
ব্যবহার করে "UserName"
কী থেকে স্ট্রিং ডেটা পুনরুদ্ধার করা হচ্ছে।
ASP.NET Core-এ সেশন শুধুমাত্র স্ট্রিং ডেটা সংরক্ষণ করতে ব্যবহৃত হয় না, আপনি অন্যান্য ডেটা টাইপও সংরক্ষণ করতে পারেন যেমন অ-স্ট্রিং ভ্যালু বা কাস্টম অবজেক্ট।
এনকোডিং এবং ডিকোডিং এর মাধ্যমে সেশন ব্যবহার করা:
public IActionResult SaveData()
{
var userData = new UserData { Id = 1, Name = "John" };
// সেশন-এ কাস্টম অবজেক্ট সংরক্ষণ
HttpContext.Session.SetString("UserData", JsonConvert.SerializeObject(userData));
return View();
}
public IActionResult RetrieveData()
{
var userDataJson = HttpContext.Session.GetString("UserData");
if (userDataJson != null)
{
var userData = JsonConvert.DeserializeObject<UserData>(userDataJson);
ViewData["UserName"] = userData.Name;
}
return View();
}
এখানে JsonConvert.SerializeObject
এবং JsonConvert.DeserializeObject
ব্যবহার করা হয়েছে JSON ফরম্যাটে ডেটা সংরক্ষণ এবং পুনরুদ্ধার করার জন্য।
Clear()
মেথড ব্যবহার করে আপনি সেশনের সব ডেটা রিসেট করতে পারেন। অথবা Remove()
মেথড ব্যবহার করে একটি নির্দিষ্ট কী মুছে ফেলতে পারেন।
public IActionResult Logout()
{
// সেশন ডেটা মুছে ফেলতে
HttpContext.Session.Clear(); // সব সেশন ডেটা রিসেট
// নির্দিষ্ট সেশন কী মুছে ফেলতে
HttpContext.Session.Remove("UserName");
return RedirectToAction("Index");
}
ASP.NET Core-এ সেশন ব্যবস্থাপনা ব্যবহারকারী ডেটা সংরক্ষণ এবং অ্যাক্সেসের একটি গুরুত্বপূর্ণ উপায়। সেশন ব্যবস্থাপনা কনফিগার করার পর আপনি সহজেই সেশন ডেটা সংরক্ষণ, পুনরুদ্ধার এবং মুছে ফেলতে পারেন। এটি শপিং কার্ট, ইউজার অথেনটিকেশন এবং সাময়িক ডেটা সংরক্ষণের জন্য অত্যন্ত কার্যকরী।
common.read_more