کار با کوکی ها در MVC 5
کار با کوکی ها Cookie در MVC 5
کوکی ها چیست؟
کوکی یک فایل متنی کوچک (حداکثر 4 کیلوبایتی) است که برای نگهداری اطلاعات در مورد کاربر از آن استفاده می شود.
کوکی ها توسط سرور ساخته شده و به مرورگر ارسال می شوند. سپس مرورگر آنها را ذخیره کرده و در مراجعات بعدی به سایت مورد نظر، آن را دوباره برای سرور ارسال می کند.
هر کوکی یک تاریخ انقضاء دارد که فقط تا آن تاریخ توسط مرورگر به سرور ارسال می شود.
مرورگرها هر کوکی را فقط به سروری ارسال می کنند که کوکی ها از آن سرور دریافت شده باشد.
می توان محدودیت های برای کوکی ها در نظر گرفت تا آنها فقط به بخش های خاصی از سایت (بر اساس آدرس) ارسال شوند.
هر چند کوکی ها در کامپیوتر کاربر ذخیره می شوند، ولی به تنهایی نمی توانند مشکل امنیتی ایجاد کنند. چرا که قابل اجرا نیستند و صرفا یک فایل متنی هستند.
هر چند کوکی ها نمی توانند اجرا شوند، ولی به سرقت رفتن (خوانده شدن) کوکی توسط افراد غیر مجاز می تواند امنیت اطلاعات را به خطر اندازد. به همین دلیل نباید برای ذخیره اطلاعات محرمانه از کوکی استفاده کرد.
ممکن است کوکی ها در مرورگر کاربر غیر فعال شده باشند، در این صورت به هیچ وج نمی توان یک کوی را برای مرورگر کاربر ارسال کرد و مرورگر نیز هیچ کوکی را برای سرور نمی فرستد.
نکته: با این روش نیز می توانید در Asp.Net هم با کوکی ها کار کنید.
برای کار با کوکی ها به ابتدا یک کلاس به نام CookieHelper داخل پوشه Helpers ایجاد کنید و کدهای زیر به آن اضافه کنید.
کلاس فوق چهار متد AddCookie ، GetCookieValue ، UpdateCookie و RemoveCookie برای کار با کوی ها دارد.
using System; using System.Collections.Generic; using System.Linq; using System.Web; namespace Helpers { public static class CookieHelper { public static void AddCookie(this HttpContextBase httpContextBase, string cookieName, string value) { httpContextBase.AddCookie(cookieName, value, DateTime.Now.AddDays(30)); } public static void RemoveCookie(this HttpContextBase httpContextBase, string cookieName) { var cookie = new HttpCookie(cookieName) { Expires = DateTime.Now.AddDays(-1) }; httpContextBase.Response.Cookies.Set(cookie); } public static void UpdateCookie(this HttpContextBase httpContextBase, string cookieName, string value,bool httpOnly=false) { var cookie = new HttpCookie(cookieName) { Value = httpContextBase.Server.UrlEncode(value), HttpOnly = httpOnly }; httpContextBase.Response.Cookies.Set(cookie); } public static void AddCookie(this HttpContextBase httpContextBase, string cookieName, string value, DateTime expires,bool httpOnly=false) { var cookie = new HttpCookie(cookieName) { Expires = expires, Value = httpContextBase.Server.UrlEncode(value) ,// For Cookies and Unicode characters HttpOnly = httpOnly }; httpContextBase.Response.Cookies.Add(cookie); } public static string GetCookieValue(this HttpContextBase httpContext, string cookieName) { var cookie = httpContext.Request.Cookies[cookieName]; if (cookie == null) return string.Empty; //cookie doesn't exist // For Cookies and Unicode characters return httpContext.Server.UrlDecode(cookie.Value); } } }
نحوه استفاده از متدهای AddCookie ، GetCookieValue ، UpdateCookie و RemoveCookie
متد AddCookie
این متد یک کوکی در مرورگر کاربر ایجاد می کند.
HttpContext.AddCookie("post", "asp",DateTime.Now.AddDays(20));
متد فوق سه ورودی: نام کوکی ، مقدار و تاریخ انقضاء را دریافت می کند.
متد GetCookieValue
این متد مقدار کوکی را از مرورگر کاربر دریافت می کند
string cookieValue = HttpContext.GetCookieValue("post");
ابتدا یک متغیر از نوع رشته تعریف می کنیم و سپس با دادن نام کوکی به متد GetCookieValue مقدار آن را دریافت میکنم.
متد UpdateCookie
این متد کوکی ایجاده شده را بروز رسانی می کند.
HttpContext.UpdateCookie("post", "asp");
این متد دو ورودی یکی نام کوکی و دیگری مقدار جدید کوکی را دریافت می کند.
متد RemoveCookie
کار این متد حذف کوکی مورد نظر از مرورگر کاربر می باشد.
HttpContext.RemoveCookie("post");
کافیست نام کوکی را به این متد بدهید تا کوکی مورد نظر از مرورگر کاربر حذف شود.
نظر / سوال