SpringSession SecurityContext Auth令牌不会持久化

时间:2017-01-17 03:32:23

标签: spring-mvc spring-security spring-session

我正在使用xml配置在SpringSecurity的应用程序上实现SpringSession。我按照本指南操作,应用程序工作率为95%,确认它正在使用redis后端:http://docs.spring.io/spring-session/docs/current/reference/html5/guides/security.html

应用程序将一些信息存储在扩展UsernamePasswordAuthenticationToken的自定义身份验证令牌中。在实现spring会话之后,似乎存储在令牌中的数据将转到错误的位置或不持久。流程是这样的:

  1. 发出请求并映射到Controller
  2. Controller以类似SecurityContextHolder.getContext().getAuthentication()
  3. 的方式获取AuthorenticationToken
  4. 此令牌是扩展UsernamePasswordAuthenticationToken的自定义标记,自定义字段设置为token.setFoo("bar")
  5. 控制器已完成并返回带有重定向命令的ModelAndView,如redirect:/nextController
  6. 在控制器完成后我看到的日志Chain processed normallySecurityContextHolder now cleared及更晚,Obtained a valid SecurityContext from SPRING_SECURITY_CONTEXT
  7. 此时,我在SecurityContext token.setFoo("bar")内的auth令牌中设置的字段为空。
  8. 如果我禁用SpringSession配置,我可以看到该应用程序使用名为JSESSIONID的cookie而不是名为SESSION的cookie,并且填充了身份验证令牌并且可以正确保存。

    非常感谢任何有关这个非常麻烦的错误的帮助,谢谢!

0 个答案:

没有答案