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");

 

转载于:https://www.cnblogs.com/xinbaba/p/10342053.html

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值