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

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

使用spring oauth2框架獲取當(dāng)前登錄用戶信息的實(shí)現(xiàn)代碼

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

使用spring oauth2框架做授權(quán)鑒定。想獲取當(dāng)前用戶信息怎么辦?

我們知道spring oauth2是基于spring security的實(shí)現(xiàn)的。

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

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

然而實(shí)際開發(fā)過(guò)程中,我們較常用到的大部分都是用戶的id。

那么怎么通過(guò)配置獲取當(dāng)前用戶的信息呢?

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

我們看下源碼

DefaultUserAuthenticationConverter.java

public Authentication extractAuthentication(Map<String, ?> map) { // userClaimName是靜態(tài)常量: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;}

那我們就給這個(gè)類,設(shè)置userDetailsService。

我們看下這個(gè)類的調(diào)用。

DefaultAccessTokenConverter.java

public class DefaultAccessTokenConverter implements AccessTokenConverter { // 一開始就被初始化好了,所以不能設(shè)置userDetailsService private UserAuthenticationConverter userTokenConverter = new DefaultUserAuthenticationConverter(); // 但是提供了setter接口,所以我們要做的就是覆蓋上面的實(shí)例。 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的話,可以這么改。

定義一個(gè)accessTokenConverter繼承DefaultAccessTokenConverter

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

定義一個(gè)jwtConverter繼承JwtAccessTokenConver

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

注冊(cè)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認(rèn)證服務(wù)

@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()獲取用戶信息了。

到此這篇關(guān)于spring oauth2獲取當(dāng)前登錄用戶信息的文章就介紹到這了,更多相關(guān)spring oauth2登錄用戶信息內(nèi)容請(qǐng)搜索好吧啦網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持好吧啦網(wǎng)!

標(biāo)簽: Spring
相關(guān)文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
日韩欧美一区二区三区在线观看| 精品视频网站| 福利在线免费视频| 国产精品一页| 国产精品一区二区三区av麻| 日韩在线一区二区| 首页欧美精品中文字幕| 国产乱码精品一区二区亚洲| 久久成人精品| 日韩午夜电影| 国产亚洲福利| 国产一区二区高清| 日韩一区精品视频| 四虎精品永久免费| 欧美国产视频| 毛片在线网站| 久久在线电影| 亚洲精品123区| 亚洲一区二区三区在线免费| 免费在线视频一区| 日韩专区在线视频| 亚洲精品日本| 国产精品.xx视频.xxtv| 麻豆久久一区| 亚洲免费福利| 欧美午夜不卡| 国产亚洲字幕| 日韩久久视频| 亚洲人成高清| 精品中文字幕一区二区三区| 久久蜜桃精品| 久久国产免费看| av在线日韩| 在线观看一区| 成人美女视频| 国产精品极品国产中出| 日本亚州欧洲精品不卡| 九色精品91| 国产69精品久久| 久久国产婷婷国产香蕉| 免费一区二区视频| 99国产精品| 欧美日韩日本国产亚洲在线| 色在线中文字幕| 国产精品久久久久av电视剧| 国产精品网在线观看| 日韩国产一区二| 亚洲性视频在线| 国产精品老牛| 视频一区国产视频| 黄色欧美日韩| 99在线精品免费视频九九视| 亚洲作爱视频| 欧美久久精品一级c片| 久久精品青草| 午夜亚洲福利在线老司机| 红桃视频欧美| 在线亚洲免费| 亚洲精品字幕| 国产视频一区二区在线播放| 国产日产一区| 精品国产亚洲一区二区在线观看| 乱一区二区av| 蜜臀国产一区| 伊人影院久久| 日精品一区二区三区| 国产精品传媒麻豆hd| 日韩影院二区| 老鸭窝亚洲一区二区三区| 九九综合九九| 亚洲综合中文| 精品久久影院| 亚洲精品在线观看91| 日韩一区二区三区在线看| 久久精品资源| 另类av一区二区| 精品亚洲精品| 男女精品网站| 伊伊综合在线| 亚洲字幕久久| 91亚洲人成网污www| 亚洲女人av| 国产黄色精品| 首页国产欧美日韩丝袜| 国产视频一区在线观看一区免费| 日韩精品免费视频人成| 日韩欧美二区| 亚洲不卡视频| 在线国产一区| 国产色播av在线| 日韩精品一区二区三区中文| 日韩精品水蜜桃| 国产精品一区三区在线观看| 激情综合自拍| 久久中文字幕一区二区三区| 日韩精品一二三区| 999国产精品视频| 美女视频黄 久久| 中文字幕亚洲影视| 精品午夜av| 久久国产免费看| 日韩中文字幕麻豆| 黄色av一区| 免费毛片在线不卡| av在线日韩| 国产va在线视频| 欧美韩日一区| 精品在线网站观看| 久久国产婷婷国产香蕉| 美女精品在线| 亚洲欧洲一区二区天堂久久| 欧美aa国产视频| 亚洲精品福利电影| 国产精品久久久久久久久妇女| 91欧美精品| 国产欧美一区二区精品久久久| 日韩不卡手机在线v区| 在线日韩成人| 亚洲一级大片| 日韩国产在线不卡视频| 日韩高清在线不卡| 日本视频在线一区| 日韩一区二区三区免费视频| 日本vs亚洲vs韩国一区三区二区| 亚洲精品观看| 欧美视频久久| 精品无人区麻豆乱码久久久 | 亚州精品视频| 97久久亚洲| 美女视频黄免费的久久| 日韩成人亚洲| 在线视频精品| 日韩手机在线| 麻豆精品新av中文字幕| 国产成人精品福利| 欧美日韩在线网站| 亚洲精品影视| 国产不卡一区| 一本一本久久| 国产精品chinese| 国产亚洲一卡2卡3卡4卡新区| 亚洲高清成人| 免费人成精品欧美精品| 日韩在线成人| 成人黄色av| 欧美亚洲三级| 亚洲精品婷婷| 久久国产精品99国产| 亚洲二区免费| 欧美一级二区| 美女91精品| 国产综合婷婷| 国产美女高潮在线观看| 久久国产人妖系列| 视频一区在线播放| 正在播放日韩精品| 国产亚洲一区二区三区不卡| 国产午夜久久| 久久精品九色| 久久精品 人人爱| 91成人精品视频| 国产精品精品| 麻豆视频观看网址久久| 久久国产人妖系列| 日韩精品一区二区三区中文在线 | 另类中文字幕国产精品| 毛片在线网站| 国产成人黄色| 久久69成人| 国产精品香蕉| 青草国产精品| 日韩av午夜在线观看| 日韩av在线免费观看不卡| 亚洲欧美专区| 日韩高清不卡一区| 欧美亚洲二区| 久久超碰99| 国产在线一区不卡| 午夜久久中文| 久久要要av| 另类av一区二区| 日韩二区三区在线观看| 国产欧美欧美| 亚洲精品免费观看| 青青伊人久久| 欧美三区四区| 日韩欧乱色一区二区三区在线| 日韩一区免费| 九九久久电影| 亚洲小说欧美另类婷婷| 欧美亚洲网站| 日韩午夜av在线| 91av亚洲| 国产精品成人自拍| 免费成人av在线播放| 日韩欧美中文在线观看| 久久一区亚洲| 日韩视频中文| 欧美久久精品| 日韩av免费|