日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

使用spring oauth2框架獲取當前登錄用戶信息的實現代碼

瀏覽:146日期:2023-08-26 14:45:17

使用spring oauth2框架做授權鑒定。想獲取當前用戶信息怎么辦?

我們知道spring oauth2是基于spring security的實現的。

spring security可以通過SecurityContextHolder.getContext().getAuthentication().getPrincipal()獲取到當前用戶信息。

而spring oauth2通過SecurityContextHolder.getContext().getAuthentication().getPrincipal()卻只能拿到當前用戶的用戶名。

然而實際開發過程中,我們較常用到的大部分都是用戶的id。

那么怎么通過配置獲取當前用戶的信息呢?

首先我們看下,為什么oauth2通過SecurityContextHolder.getContext().getAuthentication().getPrincipal()獲取到的是用戶名?

我們看下源碼

DefaultUserAuthenticationConverter.java

public Authentication extractAuthentication(Map<String, ?> 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;}

那我們就給這個類,設置userDetailsService。

我們看下這個類的調用。

DefaultAccessTokenConverter.java

public class DefaultAccessTokenConverter implements AccessTokenConverter { // 一開始就被初始化好了,所以不能設置userDetailsService private UserAuthenticationConverter userTokenConverter = new DefaultUserAuthenticationConverter(); // 但是提供了setter接口,所以我們要做的就是覆蓋上面的實例。 public void setUserTokenConverter(UserAuthenticationConverter userTokenConverter) { this.userTokenConverter = userTokenConverter; } }

所以如果是使用DefaultAccessTokenConverter的,代碼可以這么寫

@Configuration@EnableAuthorizationServerpublic class AuthorizationServerConfiguration extends AuthorizationServerConfigurerAdapter { @Override public void configure(AuthorizationServerEndpointsConfigurer endpoints) throws Exception { endpoints.tokenStore(tokenStore).authenticationManager(manager).allowedTokenEndpointRequestMethods(HttpMethod.GET, HttpMethod.POST).userDetailsService(userService)// .accessTokenConverter(tokenConverter); DefaultAccessTokenConverter converter = new DefaultAccessTokenConverter(); DefaultUserAuthenticationConverter userAuthenticationConverter= new DefaultUserAuthenticationConverter(); userAuthenticationConverter.setUserDetailsService(userService); converter.setUserTokenConverter(userAuthenticationConverter); endpoints.accessTokenConverter(converter); } }

如果是用jwtConverter的話,可以這么改。

定義一個accessTokenConverter繼承DefaultAccessTokenConverter

public class OauthAccessTokenConverter extends DefaultAccessTokenConverter { public OauthAccessTokenConverter(SecurityUserService userService) { DefaultUserAuthenticationConverter converter = new DefaultUserAuthenticationConverter(); converter.setUserDetailsService(userService); super.setUserTokenConverter(converter); }}

定義一個jwtConverter繼承JwtAccessTokenConver

public class OauthJwtAccessTokenConverter extends JwtAccessTokenConverter { public OauthJwtAccessTokenConverter(SecurityUserService userService) { super.setAccessTokenConverter(new OauthAccessTokenConverter(userService)); }}

注冊bean

@Configurationpublic class TokenConfig { @Bean public TokenStore jwtTokenStore(JwtAccessTokenConverter converter) { return new JwtTokenStore(converter); } @Bean public JwtAccessTokenConverter jwtAccessTokenConverter(SecurityUserService userService) { JwtAccessTokenConverter accessTokenConverter = new OauthJwtAccessTokenConverter(userService); accessTokenConverter.setSigningKey('sign_key'); return accessTokenConverter; }}

Oauth2認證服務

@Configuration@EnableAuthorizationServerpublic class AuthorizationServerConfiguration extends AuthorizationServerConfigurerAdapter { @Autowired private AuthenticationManager manager; @Autowired private SecurityUserService userService; @Autowired private TokenStore tokenStore; @Autowired private JwtAccessTokenConverter tokenConverter; @Override public void configure(AuthorizationServerEndpointsConfigurer endpoints) throws Exception { endpoints.tokenStore(tokenStore).authenticationManager(manager).allowedTokenEndpointRequestMethods(HttpMethod.GET, HttpMethod.POST).userDetailsService(userService).accessTokenConverter(tokenConverter); }}

最后就可以像spring security一樣。

使用SecurityContextHolder.getContext().getAuthentication().getPrincipal()獲取用戶信息了。

到此這篇關于spring oauth2獲取當前登錄用戶信息的文章就介紹到這了,更多相關spring oauth2登錄用戶信息內容請搜索好吧啦網以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持好吧啦網!

標簽: Spring
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
日韩一区免费| 99pao成人国产永久免费视频| 国产日韩综合| 日韩一区二区免费看| 亚洲精品护士| 综合五月婷婷| 欧美另类中文字幕| 丝袜诱惑制服诱惑色一区在线观看 | 亚洲人妖在线| 日韩美女国产精品| 日本麻豆一区二区三区视频| **爰片久久毛片| 黄色网一区二区| 亚洲日本网址| 久久aⅴ国产紧身牛仔裤| 亚洲欧洲免费| 青青草国产精品亚洲专区无| 日韩福利在线观看| 久久精品国产999大香线蕉| 一区二区三区四区日本视频| 韩日一区二区三区| 日本亚洲视频| 成人午夜亚洲| 欧美91精品| 日韩1区2区3区| 麻豆精品99| 视频福利一区| 中文一区一区三区免费在线观 | 国产一区二区三区免费在线| 999国产精品| 亚洲3区在线| 精品网站999| av成人国产| 久久爱www.| 女人av一区| 国产精品男女| 午夜久久一区| 亚洲精品欧洲| 麻豆理论在线观看| 国产精品日本欧美一区二区三区| 日本午夜精品一区二区三区电影| 久久男人av资源站| 免费在线欧美视频| 麻豆国产欧美一区二区三区 | 欧美日韩国产传媒| 国产免费av国片精品草莓男男| 日韩在线视频精品| 日韩在线一区二区| 精品女同一区二区三区在线观看| 五月天久久久| 久久超碰99| 蜜桃久久精品一区二区| 国产盗摄——sm在线视频| 免费观看久久久4p| 日本少妇一区| 国产精品男女| 中文字幕日韩高清在线| 日韩免费小视频| 国产精品久久久久久模特| 日韩午夜在线| 久久久久久一区二区| 日韩和欧美一区二区| 日韩大片在线播放| 国产精品日本一区二区三区在线 | 清纯唯美亚洲综合一区| 日韩中文字幕麻豆| 久久久久久久久久久9不雅视频| **爰片久久毛片| 久久国产精品亚洲77777| 毛片在线网站| 麻豆成人在线观看| 在线观看亚洲精品福利片| 丝袜av一区| 国产成人久久| 午夜久久av| 国产精品毛片一区二区三区| 欧美日韩尤物久久| 国产suv精品一区| 国产精品啊v在线| 日本一区免费网站| 在线精品福利| 蜜臀久久99精品久久久画质超高清 | 国产精品xxxav免费视频| 午夜电影一区| 在线精品视频一区| 欧美a级片一区| 99精品视频在线| 日韩高清中文字幕一区二区| 国产中文字幕一区二区三区| 国产情侣久久| 欧美一区精品| 亚洲欧洲日韩精品在线| 日韩中文字幕一区二区三区| 欧美在线综合| 另类av一区二区| 视频一区二区欧美| 伊人久久大香伊蕉在人线观看热v| 99在线观看免费视频精品观看| 伊人精品视频| 美女国产精品| 美女网站一区| 伊人久久大香线蕉av超碰演员| 激情综合自拍| 国产精品99一区二区| 在线视频观看日韩| 激情五月综合网| 亚洲欧美日本视频在线观看| 首页亚洲欧美制服丝腿| 亚洲日本欧美| **爰片久久毛片| 免费看久久久| 久久影院午夜精品| 国产一区日韩一区| 午夜在线视频观看日韩17c| 日韩中文字幕91| 丝袜诱惑制服诱惑色一区在线观看| 亚洲午夜免费| 日韩福利视频一区| 美腿丝袜亚洲三区| 亚洲人成在线网站| 亚洲福利专区| 美国三级日本三级久久99| 天堂va在线高清一区| 国产精品亚洲一区二区在线观看| 免费观看亚洲天堂| 91精品国产调教在线观看| 亚洲免费成人| 日韩欧美中文字幕电影| 久久一区国产| 影视先锋久久| 日韩一区二区久久| 国产欧美欧美| 日韩中文欧美| 蜜桃视频免费观看一区| 欧美黄色一区| 欧美色图一区| 日本精品久久| 日韩欧美二区| 久久国产精品久久w女人spa| 国产精品久久久网站| 91tv亚洲精品香蕉国产一区| 国产亚洲毛片在线| 国产精品成人**免费视频| 神马午夜在线视频| 免费视频最近日韩| 国产精品亚洲欧美一级在线| 九九精品调教| 日本一区二区中文字幕| 鲁鲁在线中文| 亚洲一二av| 美女av在线免费看| 中文字幕亚洲精品乱码| 国产成人黄色| 丝袜美腿一区| 国内在线观看一区二区三区| 不卡在线一区二区| 久久精品72免费观看| 成人久久一区| 国产视频一区二区在线播放| 国产91一区| 亚洲综合婷婷| 久久久久久久久久久9不雅视频| 日本不卡视频在线观看| 天堂а√在线最新版中文在线| 亚洲人妖在线| 久久精品高清| 欧美激情视频一区二区三区免费 | 久久尤物视频| 黄色欧美日韩| 国产一区二区三区黄网站 | 日韩美女国产精品| 在线日韩电影| 成人免费一区| 欧美另类中文字幕| 99国产精品| а√天堂中文在线资源8| 最新国产精品| 亚洲福利精品| 麻豆久久久久久久| 日韩福利视频导航| 鲁大师成人一区二区三区| 在线一区视频观看| 四季av一区二区凹凸精品| 国产精品视频3p| 欧美日韩一区二区三区不卡视频| 西西人体一区二区| av一区二区高清| 91精品韩国| 最新中文字幕在线播放| 欧美黄色精品| 国产精品theporn| 777久久精品| 日韩精品中文字幕一区二区| 99在线精品视频在线观看| 99精品视频在线| 久久精品高清| 国产主播一区| 欧美日韩中文一区二区| 久久久久国产精品一区三寸| 日本一二区不卡|