gpt4 book ai didi

spring-security - Spring Oauth2 - 重新加载主体

转载 作者:行者123 更新时间:2023-12-04 04:24:57 25 4
gpt4 key购买 nike

我已经使用 spring 安全模块实现了 OAuth2 密码授予。我添加了自己的 UserDetails 和 UserDetailsS​​ervice (jdbc) 实现。我将 User 注入(inject)到我的 Controller 中:

@AuthenticationPrincipal User user

其中 User 是我的 UserDetails 实现。
现在我想在不刷新 token 的情况下添加更改用户数据的可能性。

我尝试通过以下方式刷新主体:
User updatedUser = ...
Authentication newAuth = new UsernamePasswordAuthenticationToken(updatedUser, updatedUser.getPassword(), updatedUser.getAuthorities());
SecurityContextHolder.getContext().setAuthentication(newAuth);

但它不起作用,当我调用另一个 Controller 方法时,它返回旧的用户对象。

有没有办法在不刷新 token 的情况下更改用户数据?是否有任何解决方案可以使 Spring Security 始终从数据库(而不是从缓存)加载用户数据?

最佳答案

我不确定,但这只是一个猜测,我认为您还需要清除 SecurityContext .

首先使用 SecurityContextHolder.clearContext(); 清除安全上下文然后你的代码来设置身份验证

Authentication newAuth = new UsernamePasswordAuthenticationToken(updatedUser, updatedUser.getPassword(), updatedUser.getAuthorities());
SecurityContextHolder.getContext().setAuthentication(newAuth);

关于spring-security - Spring Oauth2 - 重新加载主体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33803986/

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