gpt4 book ai didi

java - 为所有当前登录的用户重新加载权限

转载 作者:行者123 更新时间:2023-11-30 06:46:36 27 4
gpt4 key购买 nike

我以“ super 管理员”身份登录,并且更改了某一特定用户组的权限。在此用户组中,当前有具有 Activity session 的登录用户。如何在不注销的情况下重新加载所有已登录用户的权限?

我将所有 Activity session ID 存储在数据库中,然后在“重新加载权限”上获取它们并传递给此方法:

@Autowired
private SessionRegistry sessionRegistry;

private void refreshSessionWithNewAuthorities(Collection<GrantedAuthority> authorities, String sessionId) {
SessionInformation sessionInformation = sessionRegistry.getSessionInformation(sessionId);
org.springframework.security.core.userdetails.User principal = (org.springframework.security.core.userdetails.User) sessionInformation.getPrincipal();

sessionRegistry.registerNewSession(sessionId, principal);
sessionInformation.refreshLastRequest();
}

有什么想法可以刷新所有特定 session ID 的权限吗?

以下用于重新加载请求“所有者”的代码示例,有没有办法为任何 Activity session 获取身份验证对象?

private void refreshSessionWithNewAuthorities(Collection<GrantedAuthority> authorities) {
Authentication currentAuth = SecurityContextHolder.getContext().getAuthentication();
Authentication newAuth = new UsernamePasswordAuthenticationToken(currentAuth.getPrincipal(), currentAuth.getCredentials(), authorities);

SecurityContextHolder.getContext().setAuthentication(newAuth);
}

最佳答案

与其痛苦地尝试使用新权限更新所有现有用户上下文,不如让他们注销并重新登录。

更改用户权限时,您可以检查他当前是否有 Activity session 并向客户端推送通知。通过这种方式,他将主动收到有关权限更改的通知,并且他现在拥有更多权限。与在后台 secret 更改权限相比,这很可能会为用户带来积极的体验。 而且我很确定他不会费心注销和登录,因为这会让他觉得他可以自己激活新权限。

结论:这对您来说更容易,用户体验也更好。

关于java - 为所有当前登录的用户重新加载权限,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47434167/

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