web程序中,Session是一个无法避开的点。
最近新开项目,打算从开始搭建一个基础的架子,后台用户登录成功后,需要保存session。
新建的asp.net core的模板已经包含了Session的库,
如果没有的话,那就需要手动去Nuget搜索一下,安装就好了
使用的话,也很简单
services.AddSession();
然后use
app.UseSession();
这样就可以在web程序中使用了
1.存入session
HttpContext.Session.SetString("userid", "");
2.读取session
HttpContext.Session.GetString("userid")
我在使用的时候,遇到一个问题:登录成功->写入Session->重定向->session丢失->再次登录->写入Session->登录成功
第一次登陆成功,我重定向到主页,但是会失败。session会丢失
于是我分析了一下浏览器请求,发现第一次登陆成功后,写入session,然后重定向,浏览器收到302状态的时候,根本没有来得及存入session所依赖的cookie,然后就开始跳转,跳转过去,session是读取不到的。
我的处理方法是放一个空白的html页面,加一段js代码,用js去跳转:登陆成功->写入session->返回html->通过html的jslocation.href重新跳转到需要跳转的页面->获取session成功