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");
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 提示词工程——AI应用必不可少的技术
· 地球OL攻略 —— 某应届生求职总结
· 字符编码:从基础到乱码解决
· SpringCloud带你走进微服务的世界