PREREQ:
用户使用userService的自定义实现登录并获得从数据库获得的角色。即。
authentication-provider 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扩展用户。
问题是SecureMember权限永远不会更新。
感谢 加里
答案 0 :(得分:0)
HttpSession
为空且在请求期间无效,则Spring Security不会存储安全上下文,因此如果在使会话无效后设置上下文(并且不创建新会话),则它不会被存储。
如果是这种情况,您应该看到this log message(并且启用了调试日志记录)。
创建新会话或不使原始会话无效。