我是 Spring Security 的新手。
我已经实现了 UserDetails 来创建我自己的用户。我还有我的自定义 userDetailsService。现在一切正常,但我需要在不登录的情况下更新有关我的用户的信息。如何做到这一点?我如何从上下文中接收信息然后更改它?
提前致谢
如果用户未登录,则无法从 SecurityContext 获取它。登录过程将用户置于上下文中。
只需使用 UserDetailsService 加载用户(UDS 毕竟只是一个 DAO),然后根据需要进行修改和保存。这会很有用,例如在管理用例中(例如管理员更正用户名中的拼写错误)。
如果这不是您要问的,请告诉我。
EDIT:
好的,针对您的评论(我是凭记忆做的,所以可能不是 100%):
SecurityContext context = SecurityContextHolder.getContext();
Authentication auth = context.getAuthentication();
CustomUser user = (CustomUser) auth.getPrincipal();
如果这不完全正确的话,那就非常接近了。但要小心,因为如果用户实际上没有登录,您将收到 ClassCastException - 如果激活了 Spring Security 匿名过滤器,则对 getPrincipal() 的调用将返回字符串“anonymousUser”。您当然可以轻松更新代码来处理这种可能性。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)