两个相同架构的web项目,保存session的方法代码都是一样的,但是不知道为什么A项目web登录正常保存获取Session ,B项目登录频频丢失Session ,时好时坏
使用的是谷歌浏览器
A项目控制台:正常登录
B项目控制台:正常登录,但是登录成功之后跳转页面由于获取的session 为null 导致在过滤器被重定向
二者登录验证用户信息成功后都有保存用户信息到sessIon ,保存的方法一致,所有的引用一致,过滤器写法一致,相当于复制项目,只不过内容业务不一样而已
通过控制台只发现了请求结束后的cookies 信息不一样,前者的ASP.NET_SessionId是Request Cookies
后者的ASP.NET_SessionId 是Response Cookies
两个项目部署在不同的服务器上,不知道会不会跟环境有关系
还请大家提点赐教!! 谢谢
已有豆子全部奉上
可能是和谷歌浏览器版本有关。1. 找个丢失session的谷歌浏览器 搜索 chrome://flags/
2.搜索框中搜索 SameSite by default cookies
3.修改 值为disabled 重启浏览器 在登录试试 要是可以了 就是浏览器问题
可以在Tomcat部署的时候,修改conf/context.xml,在<Context>标签里增加sessionCookieName="uniqueSessionName"
但是这个仅限部署在同一服务器、不同端口下的两个项目
问题已解决但是并不知道什么原因,我把项目框架.net framework 4.7.2 改成4.6.1版本重新编译发布之后就没有这个问题出现了