• .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
    });

  • 相关阅读:
    本周总结
    每日日报
    每日日报
    每日日报
    每日日报
    每日日报
    每日日报
    Hibernate中session.createCriteria的用法
    Spring AOP 源码分析
    TCP的三次握手四次挥手
  • 原文地址:https://www.cnblogs.com/lixiaojun1009/p/10609009.html
Copyright © 2020-2023  润新知