十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
创新互联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(Mapmap) { // 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; }