使用Spring security,遇到从HTTPS页面重定向到HTTP页面时会丢失JSESSIONID的问题

来源:互联网 发布:网络用语关于奢侈品 编辑:程序博客网 时间:2024/04/29 01:28


问题重现:

1、  直接输入登录页面地址 https://127.0.0.1/xxxx/login.do

2、  填写用户信息点登陆

3、  页面跳转到欢迎页面http://127.0.0.1/xxxx/welcome.do

4、  此时springsecurity 会提示session是null,并且跳回登录页面。

 

原因:

Tomcat下 HTTPS生产的COOKIE  JSESSIONID是无法通过HTTP传输的,当页面跳转到欢迎页面时,Tomcat由于无法获取到用户的JSESSIONID,会自动创建新的session,因此spring security会认为用户没有登录,然后跳回登录页面。

 

候选解决方案:

1、  用户登录后,全程使用https,直到用户登出。但是会影响效率(加密解密)。

2、  所有http的地址都带上JSESSIONID参数。 但是实现代价较高。

3、  从登录页面到HPPT页面跳转只发生在登录成功的那一刻,默认由类DefaultRedirectStrategy实现跳转动作。 想办法在跳转之前把SESSIONID传递给用户。这个方法一劳永逸,从问题产生的源头解决问题。

 

结论:

采用方案3。

0 0