.NetCore 使用Cookie

一、首先咱們在Startup下面的ConfigureServices中註冊受權認證服務以及AddCookie
services.AddAuthentication(CookieAuthenticationDefaults.AuthenticationScheme)
            .AddCookie(opt => { opt.LoginPath = new PathString("/Home/Index/"); });

 

二、而後能夠在須要使用cookie的地方添加
HttpContext.Response.Cookies.Append("getCookie", "setCookieValue");

 

三、而後咱們須要使用的時候直接取出cookie的值
  
 var getCookie = "";
   HttpContext.Request.Cookies.TryGetValue("getCookie", out getCookie);

 

四、到這裏都是能夠成功的,而後咱們清除瀏覽器緩存以後再來嘗試這樣來處理cookie。發現Append和TryGetValue都是沒有值的。此時心裏無比惆悵!
令我百思不得其解,Google了一些資料,發現一個解決方案,和Configure中的文件有關。。
緣由是AspNetCore2.1 支持了2018年5月25號出臺的 GDPR規範,該規範認爲 cookie是用戶的隱私數據,若是要使用的話,必須徵得用戶贊成.咱們能夠把Configure中的
app.UseCookiePolicy();

 

這一行代碼註釋掉。而後咱們再次試試,發現存取cookie都是正常的了。一切都變的那麼溫馨了...
在實際使用中咱們能夠對cookie作必定的整合,咱們首先建立一個CookieHelper
  
 public class CookieHelper:Controller
      {
        /// <summary>
        /// 添加cookie緩存不設置過時時間
        /// </summary>
        /// <param name="key"></param>
        /// <param name="value"></param>
        public void AddCookie(string key, string value)
        {
            try
            {
                HttpContext.Response.Cookies.Append(key, value);
            }
            catch (Exception ex)
            {
                throw;
            }
        }
        /// <summary>
        /// 添加cookie緩存設置過時時間
        /// </summary>
        /// <param name="key"></param>
        /// <param name="value"></param>
        /// <param name="time"></param>
        public   void AddCookie(string key,string value,int time)
        {
            HttpContext.Response.Cookies.Append(key, value,new CookieOptions
            {
                Expires=DateTime.Now.AddMilliseconds(time)
            });
        }
        /// <summary>
        /// 刪除cookie緩存
        /// </summary>
        /// <param name="key"></param>
        public void DeleteCookie(string key)
        {
            HttpContext.Response.Cookies.Delete(key);
        }
        /// <summary>
        /// 根據鍵獲取對應的cookie
        /// </summary>
        /// <param name="key"></param>
        /// <returns></returns>
        public  string GetValue(string key)
        {
            var value = "";
                HttpContext.Request.Cookies.TryGetValue(key,out value);
            if (string.IsNullOrWhiteSpace(value))
            {
                value = string.Empty;
            }
            return value;
        }
    }

 

而後咱們就能夠在咱們須要的控制器裏面去繼承
  
  public class HomeController : CookieHelper
    {
        public IActionResult Index()
        {
            AddCookie("getCookie", "這是一個測試存cookie");
            return View();
        }
    }
 
public class cookieController : CookieHelper
    {
       
        public IActionResult Index()
        {  
            ViewBag.cookie = GetValue("getCookie");
            return View();
        }
    }

 

這樣咱們就完成了一次在.Net Core 中cookie的存取了
 
 

歡迎你們掃描下方二維碼,和我一塊兒學習更多的知識😊api

 

  

相關文章
相關標籤/搜索