如何在 spring-security-oauth 中获取经过身份验证的用户

Posted

技术标签:

【中文标题】如何在 spring-security-oauth 中获取经过身份验证的用户【英文标题】:How to get authenticated user in spring-security-oauth 【发布时间】:2013-04-23 06:44:31 【问题描述】:

对于我的 REST 应用程序,我使用了基本身份验证(发送用户密码并在每个请求中登录)。对于某些需要,我使用以下方式获取登录用户:

User loggedUser = (User) SecurityContextHolder.getContext().getAuthentication().getPrincipal();

但后来我实现了 Spring-Security-Oauth2,我使用访问令牌而不是密码和登录名。现在 .getPrincipal() 方法返回“anonymousUser”。 所以我的问题是:有什么方法可以在 spring-security-oauth 中以某种方式获取登录用户?

编辑: 我发现我的安全“拦截网址模式”有问题。所以现在我可以使用 SecurityContextHolder 来获取经过身份验证的用户。

【问题讨论】:

【参考方案1】:

在控制器方法中,您可以添加此参数,然后它将为您注入,您可以访问用户信息

getUserAuthentication(OAuth2Authentication auth,Model model)

【讨论】:

以上是关于如何在 spring-security-oauth 中获取经过身份验证的用户的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 redis 使用 spring-security-oauth2 持久化令牌

我们如何使用带有 Spring 5.0 的最新 spring-security-oauth2 jar 来实现授权服务器?

如何使用带有 WebClient 的 spring-security-oauth2 自定义 OAuth2 令牌请求的授权标头?

Spring 中的 spring-security-oauth2 与 spring-security-oauth2-core

使用带有 OpenID Connect 提供程序的 spring-security-oauth2 客户端时如何访问“id_token”和“refresh_token”?

spring-security-oauth2 替代品