Cookie های ماندگار(persistent) در MVC 6

پنجشنبه 14 آبان 1394

Cookie های ماندگار یا Cookie های ذخیره شده ، Cookie هایی هستند که سمت کلاینت و روی مرورگر ذخیره می شود و تا زمانی که منقضی شوند(Cookie های ماندگار با تاریخ انقضا تنظیم می شوند) یا تا زمانی که کاربر آنها را Delete کند، باقی می مانند.

Cookie های ماندگار(persistent) در MVC 6

Cookie های ماندگار برای جمع آوری اطلاعات شناسایی کاربر مانند پیگیری گشت و گذار کاربر در وب( وب گردی) ویا تنظیمات کاربر برای یک وب سایت خاص می باشد.

در کل دو نوع Cookie وجود دارد که برای آشنایی به طور مختصر آنها توضیح می دهیم:

دو نوع cookie وبا نامهای Session cookie  و Persistent cookie وجود دارند:

Session cookie- این cookie ها موقتی هستند و زمانی که مرورگر خود را ببندید پاک می شوند و بار بعدی که  از یک سایت خاص بازدید کنید شما را تشخیص نمی دهد و با شما مثل یک بازدید کننده جدید رفتار می کند برای همین باید مجدد توسط حساب کاربری خود وارد سایت شوید.

Persistent cookie- این نوع cookie روی هارد دیسک شما باقی می ماند ولی تا زمانی که شما آنها را به طور دستی پاک کنید یا تاریخ انقضای آن سر برسد یعنی مرور گر شما بر اساس طول دوره موجود در فایل cookie ها آنها را حذف کند.

در مقاله قبلی Cookie ها در ASP.NET توضیح داده شدند، در این مقاله نحوه ایجاد Persistent cookie در MVC6 را نشان می دهیم.

همانند بسیاری از چیزها در MVC6، همه موارد با فایل Startup.cs مدیریت می شوند. این فایل در جایی قرار دارد که شما تمام تنظیمات لازم مسیریابی (routing)، سرویس ها، تزریق وابستگی و غیره را انجام می دهید. و همچنین تنظیم یک تاریخ انقضا برای Coockie های ماندگار به عنوان تاریخ پایان آن در نظر گرفته می شود.

برای تنظیم تاریخ انقضای Coockie ها، باید Coockie را به ارائه دهنده(provider) هویت فعلی خود مرتبط کنید. این کار در متد ConfigureServices مدیریت می شود که قبلا در فایل Startup.cs ذکر شده بود. مانند زیر:

public void ConfigureServices(IServiceCollection services)  
{
            // Add Entity Framework services to the services container along
            // with the necessary data contexts for the application
            services.AddEntityFramework()
                    .AddSqlServer()
                    .AddDbContext<ApplicationDbContext>(options => options.UseSqlServer(Configuration["Data:IdentityConnection:ConnectionString"]))
                    .AddDbContext<YourOtherContext>(options => options.UseSqlServer(Configuration["Data:DataConnection:ConnectionString"]));

            // Add Identity services to the services container
            services.AddIdentity<ApplicationUser, IdentityRole>(i => {
                        i.SecurityStampValidationInterval = TimeSpan.FromDays(7);
                    })
                    .AddEntityFrameworkStores<ApplicationDbContext>()                   
                    .AddDefaultTokenProviders();

            // Other stuff omitted for brevity
}

باید توجه داشته باشید که پس از یک نگاه اجمالی به این فایل، دقیقا بدانید که چه چیزهایی را باید تنظیم کنید. برای تعیین تاریخ انقضای Coockie، از Property SecurityStampValidationInterval استفاده می کنیم:

// This will allow you to set the duration / expiration of your 
// authentication token
i.SecurityStampValidationInterval = TimeSpan.FromDays(7);

در این مثال اگر کاربر ظرف هفت روز به نرم افزار وارد نشود باید دوباره اعتبارسنجی شود. شما می توانید به طور ساده این مقدار داخلی را با توجه به نیازهای خود تنظیم کنید.

 

برنامه نویسان

نویسنده 3355 مقاله در برنامه نویسان

کاربرانی که از نویسنده این مقاله تشکر کرده اند

در صورتی که در رابطه با این مقاله سوالی دارید، در تاپیک های انجمن مطرح کنید