.net core 2.1 session为null的问题,session丢失

 

遇到的问题:session可以存储,但读取时始终未null

最近项目从.net core2.0升级为2.1时,session是存储到redis里的,登录验证码是存储到session的,监控发现已经存储到redis了,但读取确始终未null

相关代码:

session的扩展方法如下:

引入如下:

 

调试如下:

   再点击登录按钮时发现session未null

 

发现2.1比2.0 Startup ConfigureServices默认多了这么一段代码

从字面了解应该是需要必经过用户cookie协议同意,个人理解为首先session在写入时会返回给用户sessionid,这个id一般是存储在用户cookice或者url里在取session值的时候使用id查询的,但是上面这个一旦开启,代表着用户必须同意你才可以使用cookice技术,导致你的sessionid无法回传,后端就会认为这是一个新的会话,所以产生了新的sessionid,就取不到值了。

我的解决办法是options.CheckConsentNeeded = context => false;注释掉就可以了。

 另外发现以下代码也有影响,应当去掉

app.UseForwardedHeaders(new ForwardedHeadersOptions
{
 ForwardedHeaders = ForwardedHeaders.XForwardedFor | ForwardedHeaders.XForwardedProto
});

posted @ 2019-03-28 14:40  晃来晃去1009  阅读(651)  评论(2编辑  收藏  举报