Spring启动,Spring安全 - 身份验证在重定向后返回null

时间:2016-04-03 15:09:11

标签: java spring spring-security vaadin

在我的项目中使用弹簧启动,弹簧安全和vaadin。

代码:

String username = ...
String password = ...
UsernamePasswordAuthenticationToken request = new UsernamePasswordAuthenticationToken(username, password);
Authentication result = authManager.authenticate(request);
SecurityContextHolder.getContext().setAuthentication(result);

我的身份验证管理器:

public Authentication authenticate(Authentication auth) throws AuthenticationException {
    String username = (String) auth.getPrincipal();
    String password = (String) auth.getCredentials();
    MyUserDetails user = userService.loadUser(username,password);
    Collection<? extends GrantedAuthority> authorities =u ser.getAuthorities();
    return new UsernamePasswordAuthenticationToken(user,username, authorities);

任何重定向 SecurityContextHolder.getContext()丢失其内容并返回 null 。我能够找到的唯一信息是,在重定向之后,应该自动从会话中重新填充上下文,但在我的情况下不会发生这种情况。

修改 我试图直接从会话中检索spring securty上下文。

ServletRequestAttributes attr = (ServletRequestAttributes)     RequestContextHolder.currentRequestAttributes();
    SecurityContextImpl sci = (SecurityContextImpl) attr.getRequest().getSession().getAttribute("SPRING_SECURITY_CONTEXT");

我不确定我是否正确操作但 SecurityContextImpl null

0 个答案:

没有答案