Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> C#

C# ASP.NET Core में सेशन कैसे इनेबल करें?

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() से पहले रजिस्टर करना चाहिए।

  1. C# ASP.NET WebAPI में CORS समस्या कैसे हल करें? C# ASP.NET WebAPI में CORS समस्या कैसे हल करें?

    क्रॉस-ओरिजिन रिसोर्स शेयरिंग (CORS) एक ऐसा तंत्र है जो ब्राउज़रों को यह बताने के लिए अतिरिक्त HTTP हेडर्स का उपयोग करता है कि एक ओरिजिन पर चल रहे वेब एप्लिकेशन को किसी अलग ओरिजिन से चुनिंदा रिसोर्सेज तक पहुंच दी जाए। एक वेब एप्लिकेशन एक क्रॉस-ओरिजिन HTTP रिक्वेस्ट निष्पादित करता है जब वह किसी ऐसे रि

  1. विंडोज 10 पर .NET Framework 3.5 को कैसे सक्षम या इंस्टॉल करें विंडोज 10 पर .NET Framework 3.5 को कैसे सक्षम या इंस्टॉल करें

    मेरी हालिया पोस्ट में, मैंने विंडोज OS में .NET Framework को छुआ है। हर विंडोज संस्करण में डिफॉल्ट रूप से एक .NET Framework संस्करण इंस्टॉल और सक्षम होता है। विंडोज 10/8 में, .NET Framework 3.5 डिफॉल्ट रूप से अक्षम होता है। लेकिन कई प्रोग्राम हैं जिन्हें चलाने के लिए अभी भी .NET 3.5 की आवश्यकता होती

  1. विंडोज पीसी पर ASP.NET मशीन अकाउंट को समझना और हटाना विंडोज पीसी पर ASP.NET मशीन अकाउंट को समझना और हटाना

    विंडोज पर लोकल यूजर अकाउंट एक शानदार फीचर है जब कई लोग एक ही पीसी का उपयोग करते हैं और अपनी प्राइवेसी बनाए रखना चाहते हैं। हालांकि, कई यूजर्स के साथ एक अजीब घटना हो रही है - उनके पीसी पर ASP.NET Machine नाम का एक नया अकाउंट अपने आप दिखाई दे रहा है। अगर आप इस समस्या का सामना कर रहे हैं और चिंतित हैं