Net Core 中WebAPI有关 Session的设置,及获取
步骤一: 在Startup 文件中做相应的设置
ConfigureServices方法里添加
//ConfigureServices添加: services.AddSession(options => { options.Cookie.Name = ".AdventureWorks.Session"; options.IdleTimeout = System.TimeSpan.FromSeconds(120);//设置session的过期时间 options.Cookie.HttpOnly = true;//设置在浏览器不能通过js获得该cookie的值 }); services.TryAddSingleton<IHttpContextAccessor, HttpContextAccessor>(); services.AddHttpContextAccessor(); #region 跨域 services.AddCors(options => options.AddPolicy("AllowSameDomain", builder => builder.WithOrigins().AllowAnyMethod().AllowAnyHeader().AllowAnyOrigin().AllowCredentials())); #endregion
//HttpContextAccessor 默认实现了它简化了访问HttpContext
services.AddSingleton<IHttpContextAccessor, HttpContextAccessor>();
Configure方法里面添加
app.UseSession();//UseSession配置在UseMvc之前
二 在具体的Control配置相应数据
1. 配置 并获取httpcontext
示例:
public class HomeController : Controller { private IHttpContextAccessor _accessor; public HomeController(IHttpContextAccessor accessor) { _accessor = accessor; } public IActionResult Index() { var httpcontext = _accessor.HttpContext; return View(); } }
2. 写SessionHelper类
public class SessionHelper { private IHttpContextAccessor _accessor; private ISession _session ; private IRequestCookieCollection _requestCookie ; private IResponseCookies _responseCookie; public SessionHelper(HttpContext context) { _session = context.Session; _requestCookie = context.Request.Cookies; _responseCookie = context.Response.Cookies; } /// <summary> /// 设置session值 /// </summary> /// <param name="session"></param> /// <param name="key">键</param> /// <param name="value">值</param> public void SetSession(string key, string value) { var bytes = System.Text.Encoding.UTF8.GetBytes(value); _session.Set(key, bytes); } /// <summary> /// 获取Session值 /// </summary> /// <param name="key"></param> /// <returns></returns> public string GetSession(string key) { Byte[] bytes; _session.TryGetValue(key, out bytes); var value = System.Text.Encoding.UTF8.GetString(bytes); if (string.IsNullOrEmpty(value)) { value = string.Empty; } return value; } ///// <summary> ///// 设置本地cookie ///// </summary> ///// <param name="key">键</param> ///// <param name="value">值</param> ///// <param name="minutes">过期时间</param> //public void SetCookies(string key,string value,int day = 1) //{ // _responseCookie.Append(key, value, new CookieOptions // { // Expires = DateTime.Now.AddDays(day) // }) ; //} //public void DeleteCookies(string key) //{ // _responseCookie.Delete(key); //} //public string GetCookiesValue(string key) //{ // _requestCookie.TryGetValue(key, out string value); // if (string.IsNullOrEmpty(value)) // { // value = string.Empty; // } // return value; //} }
3. 方法里调用sessionHelper
var httpContext = _accessor.HttpContext; SessionHelper session = new SessionHelper(httpContext); string key = "王明"; string value = "2020年 大运年"; //设置session值 session.SetSession(key, value); //获取session值 session.GetSession(key);
付费内容,请联系本人QQ:1002453261
本文来自博客园,作者:明志德道,转载请注明原文链接:https://www.cnblogs.com/for-easy-fast/p/12157664.html
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· 在鹅厂做java开发是什么体验
· 百万级群聊的设计实践
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
· 永远不要相信用户的输入:从 SQL 注入攻防看输入验证的重要性
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析