java - 使用 Spring Security 时获取当前登录的用户名

标签 java spring spring-boot spring-mvc spring-security

它是一个使用 Spring security、spring MVC 的优惠券系统应用程序, 现在。 当应用程序启动时,我需要以某种方式将当前登录的用户初始化到 Controller 中。

问题是:

  1. 如果我尝试通过 SecurityContextHolder 获取当前用户,这是不可能的,因为 spring 似乎在安全性之前初始化了 Controller ,所以我无法在 Controller 中获取它。

我有什么遗漏的吗?登录后获取当前登录用户的不同方法?

最佳答案

您需要的是@AuthenticationPrincipal。 您可以将其注入(inject)到 Controller 方法中,如下所示:

@GetMapping("/")
public void get(@AuthinticationPrincipal User user){ ... }

这里是documentation

或者,您可以创建自己的注释和自定义参数解析器,并注入(inject)您想要的任何内容。

关于java - 使用 Spring Security 时获取当前登录的用户名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57775467/

相关文章:

java - 配置 Http 安全

java - 如何在没有 Autowiring 的情况下实例化spring data jpa存储库

java - 单个实体的 Postgres UPDATE 导致 CPU 使用率高

java - Apache maven-assembly-plugin 或 maven-dependency-plugin 在运行时需要外部 jar

java - 如何通过程序跳过testNG.xml中提到的类

java - 通过分段文件上传处理动态 key

java - Spring 启动: @PreAuthorize gives 403 forbidden AccessDeniedException

Spring测试@Sql不从sql文件中插入数据

java - Android:使用AsyncTask类的回调方法来更改Activity

java - 为什么从 Eclipse 运行 Google App 时出现以下错误?