برا ی ذخیره اطلاعات روشهای مختلفی وجود دارد - در گذشته ، برنامه نویسان برای ذخیره ی اطلاعات معمولا از سرور استفاده میگردند. اما با توجه به نوع و اهمیت اطلاعات ، استفاده ی همیشگی از سرور برای ذخیره اطلاعات کاربران روش مناسبی نیست.
بنابراین کوکیها (Cookie) یکی از گزینه های مناسب جهت ذخیره ی اطلاعات کاربران در سمت کاربر می باشد. هر کوکی از دوبخش key و value برای ذخیره و بازیابی اطلاعات تشکیل شده است. در مثال زیر از دو (IHttpContextAccessor و Request ) روش برای خواندن کوکیها استفاده شده است.
- //read cookie from IHttpContextAccessor
- string cookieValueFromContext = _httpContextAccessor.HttpContext.Request.Cookies["key"];
- //read cookie from Request object
- string cookieValueFromReq = Request.Cookies["Key"];
با استفاده از CookieOption میتوانیم تنظیمات بیشتری را برای کوکیها در نظر بگیریم.
HttpOnly : در صورتیکه مقدار آن true باشد فقط از طریق درخواستهای http با کوکیها دسترسی داریم .
Secure : در صورتیکه مقدار ان true باشد فقط از طریق http به کوکیها دسترسی داریم.
نکته : در صوت نیاز به دسترسی به کوکیها با دو پروتکل فوق از دستور Secure = Request.IsHttps
استفاده میکنیم.
Expire : مشخص کننده ی تاریخ انقضای کوکی می باشد.
در کد زیر تمامی دستورات مرتبط با اضافه کردن و حذف و دریافت کوکیها را مشاهده مکنید.
- 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);
- }