.NetCore 使用Cookie


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

 

2、然后可以在需要使用cookie的地方添加
HttpContext.Response.Cookies.Append("getCookie", "setCookieValue");

 

3、然后我們需要使用的時候直接取出cookie的值
  
 var getCookie = "";
   HttpContext.Request.Cookies.TryGetValue("getCookie", out getCookie);

 

4、到這里都是可以成功的,然后我們清除瀏覽器緩存之后再來嘗試這樣來處理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的存取了
 
 

歡迎大家掃描下方二維碼,和我一起學習更多的知識😊

 

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM