Spring security 以编程方式使用不同的Spring安全权限重新登录用户
预请求:Spring security 以编程方式使用不同的Spring安全权限重新登录用户,spring-security,Spring Security,预请求: 用户登录并获得使用自定义userService实现从数据库获得的角色。i、 e 身份验证提供程序用户服务ref=“securityPolicyService” 调用实现的方法loadUserByUsername,并为用户加载他们登录的特定俱乐部的角色,默认情况下第一次加载一个 然后,用户单击UI中的另一个俱乐部,我调用一个服务上的方法,该服务获取该俱乐部的新权限列表 然后,我执行以下操作: Object principle = SecurityContextHolder.getCont
用户登录并获得使用自定义userService实现从数据库获得的角色。i、 e 身份验证提供程序用户服务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();
objectprinciple=SecurityContextHolder.getContext().getAuthentication().getPrincipal();
SecureMember sm=(SecureMember)原则;
身份验证验证=
新用户名PasswordAuthenticationToken(sm、null、newAuthories)
SecurityContextHolder.getContext().setAuthentication(auth)
request.getSession(false).invalidate();
SecureMember从SpringFramework扩展用户
问题是安全成员机构从未更新过新的机构
谢谢
Gary如果HttpSession为空并且在请求过程中无效,则Spring Security不会存储安全上下文,因此如果在会话无效后设置上下文(并且不创建新会话),则不会存储该上下文 您应该看到是否是这种情况(并且启用了调试日志记录)
创建新会话或不使原始会话无效。为什么要使会话无效?当您这样做时,用户不是正在注销吗?对不起,request.getSession(false).invalidate();在上面的代码被剪断之前调用。它不应该在那里。