کار با Cookie در ASP.NET Core

Cookie

کار با Cookie در ASP.NET Core ، این مقاله نحوه ی ارتباط برقرار کردن ASP.NET Core با کوکی ها را شرح می دهد. کوکی ها مجموعه هایی از جفت کلید-مقدار هستند که در آن می توانیم با استفاده از کلید بخوانیم، بنویسیم و حذف کنیم.

HTTP Cookie بخشی از داده ها است که در مرورگر کاربر ذخیره می شود.

مقدمه Cookie

HTTP Cookie بخشی از داده ها است که در مرورگر کاربر ذخیره می شود.

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

در asp.net core کار با کوکی ها تسهیل یافته است. من چند لایه ی انتزاعی بر روی شیء Http cookie نوشته ام.

کوکی ها مجموعه هایی از جفت کلید مقدار هستند که در آن می توانیم با استفاده از کلید بخوانیم، بنویسیم و حذف کنیم.

در ASP.NET ، می توانیم با استفاده از httpcontext.current به کوکی ها دسترسی پیدا کنیم اما در ASP.NET Core، هیچ httpcontext.currently وجود ندارد.

در ASP.NET Core، همه چیز از هم گسسته و ماژولار است.

Httpcontext از شیء Request و رابط IHttpContextAccessor قابل دسترس است که تحت فضای نام “ Microsoft.AspNetCore.Http ” قرار دارد و این مورد در هر کجا از برنامه موجود و قابل دسترس است.

بروزرسانی: من یک wrapper بر روی Http Cookie نوشته ام که در تسهیل بکارگیری و امنیت داده های کوکی به شما کمک می کند.

CookieManager یک لایه ی ASPNET Core Abstraction بر روی کوکی می باشد. در اینجا بیشتر مطالعه کنید.

خواندن کوکی

HttpCookie از طریق Request.Cookies قابل دسترس است. در ادامه کد نمونه آورده شده است،

//read cookie from IHttpContextAccessor  
string cookieValueFromContext = _httpContextAccessor.HttpContext.Request.Cookies["key"];  

//read cookie from Request object  
string cookieValueFromReq = Request.Cookies["Key"];  

نوشتن کوکی

در اینجا قطعه کد نوشتن کوکی ها آورده شده است. CookieOption جهت توسعه ی رفتار کوکی قابل دسترس است.

/// 
<summary>  
/// set the cookie  
/// </summary>

  
/// <param name="key">key (unique indentifier)</param>  
/// <param name="value">value to store in cookie object</param>  
/// <param name="expireTime">expiration time</param>  
public void Set(string key, string value, int? expireTime)  
{  
   CookieOptions option = new CookieOptions();  

   if (expireTime.HasValue)  
         option.Expires = DateTime.Now.AddMinutes(expireTime.Value);  
   else  
         option.Expires = DateTime.Now.AddMilliseconds(10);  
   
   Response.Cookies.Append(key, value, option);  
}  

حذف کوکی

کوکی را از طریق نام کلید حذف کنید.

/// 
<summary>  
/// Delete the key  
/// </summary>

  
/// <param name="key">Key</param>  
public void Remove(string key)  
{  
      Response.Cookies.Delete(key);  
}  

CookieOptions

رفتار کوکی در مرورگر را توسعه می دهد.

امکانات :

  1.  Domain : دامنه ای که می خواهید با کوکی ارتباط دهید.
  2.  Path : مسیر کوکی
  3. Expires : تاریخ و زمان انقضای کوکی
  4.  HttpOnly : یک مقدار را که مشخص می کند آیا یک کوکی از طریق اسکریپت سمت سرویس گیرنده قابل دسترس است یا خیر، می گیرد یا تنظیم می کند.
  5.  Secure : کوکی را با استفاده از (Secure Sockets Layer (SSL، که تنها بر روی HTTPS قرار دارد، منتقل می کند.

در اینجا کد کامل مثال برای خواندن، نوشتن و حذف کوکی آمده است.

public class HomeController : Controller  
{  
    private readonly IHttpContextAccessor _httpContextAccessor;  
  
    public HomeController(IHttpContextAccessor httpContextAccessor)  
    {  
        this._httpContextAccessor = httpContextAccessor;  
    }  
    public IActionResult Index()  
    {  
        //read cookie from IHttpContextAccessor  
        string cookieValueFromContext = _httpContextAccessor.HttpContext.Request.Cookies["key"];  
        //read cookie from Request object  
        string cookieValueFromReq = Request.Cookies["Key"];  
        //set the key value in Cookie  
        Set("kay", "Hello from cookie", 10);  
        //Delete the cookie object  
        Remove("Key");  
        return View();  
    }  
    /// 
<summary>  
    /// Get the cookie  
    /// </summary>

  
    /// <param name="key">Key </param>  
    /// <returns>string value</returns>  
    public string Get(string key)  
    {  
        return Request.Cookies[Key];  
    }  
    /// 
<summary>  
    /// set the cookie  
    /// </summary>

  
    /// <param name="key">key (unique indentifier)</param>  
    /// <param name="value">value to store in cookie object</param>  
    /// <param name="expireTime">expiration time</param>  
    public void Set(string key, string value, int? expireTime)  
    {  
        CookieOptions option = new CookieOptions();  
        if (expireTime.HasValue)  
            option.Expires = DateTime.Now.AddMinutes(expireTime.Value);  
        else  
            option.Expires = DateTime.Now.AddMilliseconds(10);  
            Response.Cookies.Append(key, value, option);  
    }  
    /// 
<summary>  
    /// Delete the key  
    /// </summary>

  
    /// <param name="key">Key</param>  
    public void Remove(string key)  
    {  
        Response.Cookies.Delete(key);  
    }  
}   

امیدوارم نحوه ی کار با کوکی ها در ASP.NET Core را آموخته باشید. مثالی از خواندن، نوشتن و حذف اشیاء کوکی را نشان داده ام.

زهره سلطانیان

نوشته‌های مرتبط

دیدگاه‌ها

*
*

این سایت از اکیسمت برای کاهش هرزنامه استفاده می کند. بیاموزید که چگونه اطلاعات دیدگاه های شما پردازش می‌شوند.

میشه تو نظرسنجی ما شرکت کنید؟بزن بریم