gpt4 book ai didi

java - 通过spring security(angularjs)获取登录用户的正确方法是什么

转载 作者:行者123 更新时间:2023-11-30 07:08:40 25 4
gpt4 key购买 nike

成功登录后,如何在 Spring RestController 中检索已登录的用户?

我使用下面的方法/原理来获取登录用户,但它检索的是anonymousUser而不是登录用户。

Principal principal = SecurityContextHolder.getContext().getAuthentication();

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

最佳答案

您可以从 Authentication 对象中获取登录的用户名。要获取用户对象,您可以使用从身份验证对象中检索到的用户名。

这样的事情应该有效:

Authentication auth = SecurityContextHolder.getContext().getAuthentication();
String name = auth.getName();
User user = userService.findByUserName(name);

或者更好的是,您可以在 Controller 中使用Principal作为参数,并让Spring传递正确的principal对象。如果用户未登录,则为空。

 public String hello(Principal principal ) {

String name = principal.getName();
User user = userService.findByUserName(name);

}

Ps:如果您获得匿名身份验证,则用户未经过身份验证。当用户未登录时,SecurityContext 返回匿名身份验证。`

关于java - 通过spring security(angularjs)获取登录用户的正确方法是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39591528/

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