如何使用springoauth2框架获取当前登录用户信息-创新互联

创新互联www.cdcxhl.cn八线动态BGP香港云服务器提供商,新人活动买多久送多久,划算不套路!

成都创新互联是一家专业提供盐城企业网站建设,专注与网站设计、成都网站建设、HTML5建站、小程序制作等业务。10年已为盐城众多企业、政府机构等服务。创新互联专业的建站公司优惠进行中。

这篇文章主要讲解了如何使用spring oauth2框架获取当前登录用户信息,内容清晰明了,对此有兴趣的小伙伴可以学习一下,相信大家阅读完之后会有帮助。

使用spring oauth3框架做授权鉴定。想获取当前用户信息怎么办?

我们知道spring oauth3是基于spring security的实现的。

spring security可以通过SecurityContextHolder.getContext().getAuthentication().getPrincipal()获取到当前用户信息。

而spring oauth3通过SecurityContextHolder.getContext().getAuthentication().getPrincipal()却只能拿到当前用户的用户名。

然而实际开发过程中,我们较常用到的大部分都是用户的id。

那么怎么通过配置获取当前用户的信息呢?

首先我们看下,为什么oauth3通过SecurityContextHolder.getContext().getAuthentication().getPrincipal()获取到的是用户名?

我们看下源码

DefaultUserAuthenticationConverter.java

public Authentication extractAuthentication(Map map) {
      // userClaimName是静态常量:username
  if (map.containsKey(userClaimName)) {
    Object principal = map.get(userClaimName);
    Collection<? extends GrantedAuthority> authorities = getAuthorities(map);
          // 原因就是这里。如果userDetailsService为空,返回的就是用户名。
    if (userDetailsService != null) {
      UserDetails user = userDetailsService.loadUserByUsername((String) map.get(userClaimName));
      authorities = user.getAuthorities();
      principal = user;
    }
    return new UsernamePasswordAuthenticationToken(principal, "N/A", authorities);
  }
  return null;
}

文章题目:如何使用springoauth2框架获取当前登录用户信息-创新互联
网址分享:http://pwwzsj.com/article/dojcch.html