Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Spring Security如何在不登录的情况下更新userDetails_Java_Spring_Spring Security - Fatal编程技术网

Java Spring Security如何在不登录的情况下更新userDetails

Java Spring Security如何在不登录的情况下更新userDetails,java,spring,spring-security,Java,Spring,Spring Security,我是新来的春天安全。 我已经实现了UserDetails来创建我自己的用户。我还有我的自定义UserDetails服务。现在一切正常,但我需要在不登录的情况下更新我用户的信息。如何做到这一点?如何从上下文接收信息,然后对其进行更改? 提前感谢如果用户未登录,则无法从SecurityContext获取该信息。登录过程将用户置于上下文中 只需使用UserDetailsService加载用户(UDS毕竟只是一个DAO),然后根据需要修改并保存它。这将非常有用,例如在管理用例中(例如,admin更正用户

我是新来的春天安全。 我已经实现了UserDetails来创建我自己的用户。我还有我的自定义UserDetails服务。现在一切正常,但我需要在不登录的情况下更新我用户的信息。如何做到这一点?如何从上下文接收信息,然后对其进行更改?
提前感谢

如果用户未登录,则无法从SecurityContext获取该信息。登录过程将用户置于上下文中

只需使用UserDetailsService加载用户(UDS毕竟只是一个DAO),然后根据需要修改并保存它。这将非常有用,例如在管理用例中(例如,admin更正用户名中的拼写错误)

如果这不是你要问的,请告诉我

编辑:

好的,作为对你评论的回应(我是凭记忆做的,所以可能不是100%):


如果这不完全正确的话,那就非常接近。但是要小心,因为如果用户没有实际登录,您将得到ClassCastException——如果Spring安全匿名筛选器被激活,则对getPrincipal()的调用将返回字符串“anonymousUser”。当然,您可以轻松地更新代码以处理这种可能性。

用户已登录。但是我需要在没有再次登录的情况下对其进行更新..我不知道该怎么做
SecurityContext context = SecurityContextHolder.getContext();
Authentication auth = context.getAuthentication();
CustomUser user = (CustomUser) auth.getPrincipal();