asp.netCore中 Cookie、Session使用


方法一、在.netCore中使用session首先需要在Startup中進行配置,

在 public IServiceProvider ConfigureServices(IServiceCollection services)中添加

//添加session
services.AddDistributedMemoryCache();
services.AddSession(options =>
{
  // 設置 Session 過期時間15分鍾
  options.IdleTimeout = TimeSpan.FromMinutes(15);
});

為方便統一獲取,把Cookie和Session統一放到BaseController中

    public abstract class BaseController : Controller
    {
        private readonly IHttpContextAccessor _httpContextAccessor;
        private ISession _session => _httpContextAccessor.HttpContext.Session;
        /// <summary>
        /// 設置本地cookie
        /// </summary>
        /// <param name="key"></param>
        /// <param name="value"></param>  
        /// <param name="minutes">過期時長,單位:分鍾</param>      
        protected void SetCookies(string key, string value, int minutes = 30)
        {
            HttpContext.Response.Cookies.Append(key, value, new CookieOptions
            {
                Expires = DateTime.Now.AddMinutes(minutes)
            });
        }
        /// <summary>
        /// 刪除指定的cookie
        /// </summary>
        /// <param name="key"></param>
        protected void DeleteCookies(string key)
        {
            HttpContext.Response.Cookies.Delete(key);
        }

        /// <summary>
        /// 獲取cookie的value
        /// </summary>
        /// <param name="key"></param>
        /// <returns>返回對應的值</returns>
        protected string GetCookiesValue(string key)
        {
            HttpContext.Request.Cookies.TryGetValue(key, out string value);
            if (string.IsNullOrEmpty(value))
                value = string.Empty;
            return value;
        }

        /// <summary>
        /// 添加Sesssion
        /// </summary>
        /// <param name="SesionStr"></param>
        /// <param name="Code"></param>
        public void SetSession(string SesionStr, string Code)
        {
            _session.SetString(SesionStr, Code);
        }

        /// <summary>
        /// 獲取Session
        /// </summary>
        public string GetSession(string SesionStr)
        {
            string code = _session.GetString(SesionStr);
            return code;
        }
    }

在HomeController繼承BaseController,並進行設置Cookies和Session

設置Cookies

 SetCookies("CookiesKey", cookieValue, 60);

獲取Cookies

GetCookiesValue("CookiesKey");

方法二、設置和讀取Session。

添加SessionExtensions類,使用序列化來保存Value

    using Microsoft.AspNetCore.Http;//需要添加此應用
//添加和獲取Session
public static class SessionExtensions { public static void SetObjectAsJson<T>(this ISession session, string key, T value) { session.SetString(key, JsonConvert.SerializeObject(value)); } public static T GetObjectFromJson<T>(this ISession session, string key) { var value = session.GetString(key); return value == null ? default(T) : JsonConvert.DeserializeObject<T>(value); } }

設置Session

//values可以為單一字符或者實體類
HttpContext.Session.SetObjectAsJson("SessionKey", UserModel);

獲取Session

HttpContext.Session.GetObjectFromJson<UserModel>("SessionKey");

 


免責聲明!

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



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