ASP.NET Core में सेशन एक फीचर है जो हमें यूजर डेटा को सेव/स्टोर करने में सक्षम बनाता है। सेशन डेटा को सर्वर पर डिक्शनरी में स्टोर करता है और SessionId को कुंजी के रूप में उपयोग करता है। SessionId क्लाइंट पर कुकी के रूप में स्टोर होता है और हर रिक्वेस्ट के साथ भेजा जाता है।
सेशन की मुख्य विशेषताएं
- SessionId कुकी प्रति ब्राउज़र होती है - इसे ब्राउज़र्स के बीच शेयर नहीं किया जा सकता
- SessionId कुकी के लिए कोई टाइमआउट नहीं - ब्राउज़र सेशन समाप्त होने पर डिलीट हो जाती है
- सर्वर पर सेशन सीमित समय तक रहता है - डिफ़ॉल्ट टाइमआउट 20 मिनट (कॉन्फिगरेबल)
सेशन सेटअप के चरण
1. NuGet पैकेज इंस्टॉल करें
Microsoft.AspNetCore.Session
2. Startup.cs में सेशन कॉन्फिगर करें
public class Startup
{
public void ConfigureServices(IServiceCollection services)
{
services.AddMvc();
// सेशन सर्विसेज जोड़ें
services.AddSession(options =>
{
options.IdleTimeout = TimeSpan.FromMinutes(60); // 60 मिनट आइडल टाइमआउट
options.Cookie.HttpOnly = true; // सुरक्षा के लिए
options.Cookie.IsEssential = true; // GDPR अनुपालन के लिए
});
}
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
// सेशन मिडलवेयर को MVC से पहले जोड़ें
app.UseSession();
app.UseRouting();
app.UseAuthorization();
app.UseEndpoints(endpoints =>
{
endpoints.MapDefaultControllerRoute();
});
}
}
सेशन एक्सेस करना
कंट्रोलर में सेशन सेट/गेट करें
public class HomeController : Controller
{
[Route("home/index")]
public IActionResult Index()
{
// स्ट्रिंग वैल्यू सेट करें
HttpContext.Session.SetString("product", "laptop");
// इंट वैल्यू सेट करें
HttpContext.Session.SetInt32("quantity", 5);
// कॉम्प्लेक्स ऑब्जेक्ट सेट करें (सीरियलाइज़ेशन आवश्यक)
var user = new { Name = "John", Role = "Admin" };
HttpContext.Session.SetString("user", JsonSerializer.Serialize(user));
return View();
}
[Route("home/getsession")]
public IActionResult GetSessionData()
{
// स्ट्रिंग प्राप्त करें
string product = HttpContext.Session.GetString("product");
// इंट प्राप्त करें (nullable int लौटाता है)
int? quantity = HttpContext.Session.GetInt32("quantity");
// कॉम्प्लेक्स ऑब्जेक्ट प्राप्त करें
string userJson = HttpContext.Session.GetString("user");
var user = userJson != null ? JsonSerializer.Deserialize<dynamic>(userJson) : null;
ViewBag.Product = product;
ViewBag.Quantity = quantity;
ViewBag.User = user;
return View();
}
}
सेशन एक्सटेंशन मेथड्स
| मेथड | विवरण |
|---|---|
SetString(key, value) | स्ट्रिंग वैल्यू सेट करता है |
GetString(key) | स्ट्रिंग वैल्यू प्राप्त करता है (null अगर नहीं मिला) |
SetInt32(key, value) | इंट वैल्यू सेट करता है |
GetInt32(key) | इंट वैल्यू प्राप्त करता है (null अगर नहीं मिला) |
Set(key, byte[]) | बाइट ऐरे सेट करता है (किसी भी ऑब्जेक्ट के लिए) |
Get(key) | बाइट ऐरे प्राप्त करता है |
Remove(key) | स्पेसिफिक कुंजी हटाता है |
Clear() | सभी सेशन डेटा क्लियर करता है |
सेशन ऑप्शन्स कॉन्फिगरेशन
services.AddSession(options =>
{
options.IdleTimeout = TimeSpan.FromMinutes(30); // आइडल टाइमआउट
options.IOTimeout = TimeSpan.FromMinutes(5); // I/O ऑपरेशन टाइमआउट
options.Cookie.Name = ".MyApp.Session"; // कुकी नाम
options.Cookie.Domain = "example.com"; // कुकी डोमेन
options.Cookie.Path = "/"; // कुकी पथ
options.Cookie.HttpOnly = true; // JavaScript से एक्सेस रोकें
options.Cookie.SecurePolicy = CookieSecurePolicy.Always; // केवल HTTPS
options.Cookie.SameSite = SameSiteMode.Lax; // CSRF सुरक्षा
});
नोट: सेशन मिडलवेयर (app.UseSession()) को app.UseRouting() और app.UseEndpoints() से पहले रजिस्टर करना चाहिए।