gpt4 book ai didi

java - 如何使用 Spring Security 重新加载用户更新权限

转载 作者:IT老高 更新时间:2023-10-28 13:04:56 25 4
gpt4 key购买 nike

我正在使用 Spring Security 通过 OpenID 进行身份验证的应用程序。当用户登录时,会在他的 session 中加载一些权限。

我拥有完全权限的用户,可以修改其他用户的权限(撤销、添加角色)。我的问题是,如何动态更改用户 session 权限? (不能使用 SecurityContextHolder,因为我想更改另一个用户 session )。

简单的方法:使用户 session 无效,但如何?更好的方法:用新的权限刷新用户 session ,但是如何?

最佳答案

如果您需要动态更新已登录用户的权限(当这些权限发生更改时,无论出于何种原因),当然无需注销并登录,您只需重置 Authentication Spring SecurityContextHolder 中的对象(安全 token )。

例子:

Authentication auth = SecurityContextHolder.getContext().getAuthentication();

List<GrantedAuthority> updatedAuthorities = new ArrayList<>(auth.getAuthorities());
updatedAuthorities.add(...); //add your role here [e.g., new SimpleGrantedAuthority("ROLE_NEW_ROLE")]

Authentication newAuth = new UsernamePasswordAuthenticationToken(auth.getPrincipal(), auth.getCredentials(), updatedAuthorities);

SecurityContextHolder.getContext().setAuthentication(newAuth);

关于java - 如何使用 Spring Security 重新加载用户更新权限,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9910252/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com