0

PreReq:
用户登录并获得使用 userService 的自定义实现从数据库中获取的角色。IE

身份验证提供者 user-service-ref="securityPolicyService"

实现的方法loadUserByUsername被调用,并且为他们正在登录的特定俱乐部的用户加载角色,默认一个是第一次加载的。

然后,用户从 UI 中单击不同的俱乐部,然后我调用服务上的方法来获取该俱乐部的新权限列表。

然后我执行以下操作:

Object principle = SecurityContextHolder.getContext().getAuthentication().getPrincipal();
SecureMember sm = (SecureMember) principle;
Authentication auth = 
      new UsernamePasswordAuthenticationToken(sm, null, newAuthories); <br><br>
    SecurityContextHolder.getContext().setAuthentication(auth);<br>
request.getSession(false).invalidate();

SecureMember 从 SpringFramework 扩展 User。

问题是 SecureMember 权限永远不会更新为新权限。

谢谢加里

4

1 回答 1

0

如果 为 null 并且在请求期间无效,则 Spring Security 不会存储安全上下文HttpSession,因此如果您在使会话无效后设置上下文(并且不创建新会话),则不会存储它。

如果是这种情况(并且您启用了调试日志记录),您应该会看到此日志消息。

要么创建一个新会话,要么不使原始会话无效。

于 2012-04-13T23:26:10.570 回答