欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

springsecurity 企業(yè)微信登入的實(shí)現(xiàn)示例

 更新時(shí)間:2022年04月15日 10:52:38   作者:川流不息attitude  
本文主要介紹了springsecurity 企業(yè)微信登入的實(shí)現(xiàn)示例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

背景

后臺(tái)系統(tǒng)需要接入 企業(yè)微信登入,滿足企業(yè)員工快速登入系統(tǒng)

流程圖

簡(jiǎn)單代碼說明

自定義一套 springsecurity 認(rèn)證邏輯

主要就是 根據(jù)code 獲取綁定用戶信息 然后返回登入 token ,和qq ,微信 等第 3方登入 一個(gè)套路

// 自定義 WeChatAuthenticationProvider
public class WeChatAuthenticationProvider ?implements AuthenticationProvider {

? ? private UserDetailsService userDetailsService;

? ? public WeChatAuthenticationProvider(UserDetailsService userDetailsService){
? ? ? ? this.userDetailsService = userDetailsService;
? ? }

? ? @Override
? ? public Authentication authenticate(Authentication authentication) throws AuthenticationException {
? ? ? ? WeChatAuthenticationToken authenticationToken = (WeChatAuthenticationToken) authentication;

? ? ? ? String userId = (String) authenticationToken.getPrincipal();

? ? ? ? UserDetails userDetails = userDetailsService.loadUserByUsername(userId);

? ? ? ? // 此時(shí)鑒權(quán)成功后,應(yīng)當(dāng)重新 new 一個(gè)擁有鑒權(quán)的 authenticationResult 返回
? ? ? ? BrowserAuthenticationToken authenticationResult = new BrowserAuthenticationToken(userDetails, userDetails.getAuthorities());

? ? ? ? authenticationResult.setDetails(authenticationToken.getDetails());

? ? ? ? return authenticationResult;
? ? }


? ? @Override
? ? public boolean supports(Class<?> authentication) {
? ? ? ? // 判斷 authentication 是不是 SmsCodeAuthenticationToken 的子類或子接口
? ? ? ? return WeChatAuthenticationToken.class.isAssignableFrom(authentication);
? ? }

? ? public UserDetailsService getUserDetailsService() {
? ? ? ? return userDetailsService;
? ? }

? ? public void setUserDetailsService(UserDetailsService userDetailsService) {
? ? ? ? this.userDetailsService = userDetailsService;
? ? }
}

// 重寫 UserDetailsService
? ? @Override
? ? public UserDetails loadUserByUsername(String code) throws UsernameNotFoundException {
? ? ? ? String weChatUserId = weChatService.getWeChatUserId(code);
? ? ? ? LambdaQueryWrapper<SysUserWechat> lambda = new QueryWrapper<SysUserWechat>().lambda();
? ? ? ? lambda.eq(SysUserWechat::getDeleted, DataStatusEnum.NORMAL.getCode());
? ? ? ? lambda.eq(SysUserWechat::getWechatId,weChatUserId);
? ? ? ? List<SysUserWechat> sysUserWechats = sysUserWechatService.list(lambda);

? ? ? ? if(CollectionUtils.isEmpty(sysUserWechats)){
? ? ? ? ? ? throw new ServiceException(GOOGLE_AUTHENTICATOR_601001.getMsg(),GOOGLE_AUTHENTICATOR_601001.getCode());
? ? ? ? }
? ? ? ? SysUserWechat sysUserWechat = sysUserWechats.get(0);
? ? ? ? Long sysUserId = sysUserWechat.getSysUserId();
? ? ? ? SysUser sysUser = userService.selectUserById(sysUserId);
? ? ? ? if (StringUtils.isNull(sysUser)) {
? ? ? ? ? ? throw new ServiceException(GOOGLE_AUTHENTICATOR_601001.getMsg(),GOOGLE_AUTHENTICATOR_501001.getCode());
? ? ? ? }
? ? ? ? if (UserStatus.DELETED.getCode().equals(sysUser.getDelFlag())) {
? ? ? ? ? ? throw new ServiceException(GOOGLE_AUTHENTICATOR_601001.getMsg(),GOOGLE_AUTHENTICATOR_501001.getCode());
? ? ? ? }
? ? ? ? if (UserStatus.DISABLE.getCode().equals(sysUser.getStatus())) {
? ? ? ? ? ? throw new ServiceException(GOOGLE_AUTHENTICATOR_601001.getMsg(),GOOGLE_AUTHENTICATOR_501001.getCode());
? ? ? ? }

? ? ? ? return createLoginUser(sysUser);
? ? }

到此這篇關(guān)于springsecurity 企業(yè)微信登入的實(shí)現(xiàn)示例的文章就介紹到這了,更多相關(guān)springsecurity 企業(yè)微信登入內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 詳解rabbitmq創(chuàng)建queue時(shí)arguments參數(shù)注釋

    詳解rabbitmq創(chuàng)建queue時(shí)arguments參數(shù)注釋

    這篇文章主要介紹了rabbitmq創(chuàng)建queue時(shí)arguments參數(shù)注釋,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-03-03
  • 指定springboot的jar運(yùn)行內(nèi)存方式

    指定springboot的jar運(yùn)行內(nèi)存方式

    這篇文章主要介紹了指定springboot的jar運(yùn)行內(nèi)存方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-02-02
  • Java中初始化List集合的八種方式匯總

    Java中初始化List集合的八種方式匯總

    List?是?Java?開發(fā)中經(jīng)常會(huì)使用的集合,下面這篇文章主要給大家介紹了關(guān)于Java中初始化List集合的八種方式,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-06-06
  • Spring中自定義Schema如何解析生效詳解

    Spring中自定義Schema如何解析生效詳解

    Spring2.5在2.0的基于Schema的Bean配置的基礎(chǔ)之上,再增加了擴(kuò)展XML配置的機(jī)制。通過該機(jī)制,我們可以編寫自己的Schema,并根據(jù)自定義的Schema用自定的標(biāo)簽配置Bean,下面這篇文章主要介紹了關(guān)于Spring中自定義Schema如何解析生效的相關(guān)資料,需要的朋友可以參考下
    2018-07-07
  • SpringBoot結(jié)合SpringSecurity實(shí)現(xiàn)圖形驗(yàn)證碼功能

    SpringBoot結(jié)合SpringSecurity實(shí)現(xiàn)圖形驗(yàn)證碼功能

    這篇文章主要介紹了SpringBoot + SpringSecurity 實(shí)現(xiàn)圖形驗(yàn)證碼功能,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-05-05
  • 淺談java中異常拋出后代碼是否會(huì)繼續(xù)執(zhí)行

    淺談java中異常拋出后代碼是否會(huì)繼續(xù)執(zhí)行

    這篇文章主要給大家介紹了java中異常拋出后代碼是否會(huì)繼續(xù)執(zhí)行,文章通過幾種情況的代碼示例給大家詳細(xì)分析了這個(gè)情況,有需要的朋友們可以參考借鑒,下面來一起看看吧。
    2016-10-10
  • Java的JSON轉(zhuǎn)換類庫GSON的基礎(chǔ)使用教程

    Java的JSON轉(zhuǎn)換類庫GSON的基礎(chǔ)使用教程

    GSON是谷歌開源的一款Java對(duì)象與JSON對(duì)象互相轉(zhuǎn)換的類庫,Java的JSON轉(zhuǎn)換類庫GSON的基礎(chǔ)使用教程,需要的朋友可以參考下
    2016-06-06
  • Java組件FileUpload上傳文件實(shí)現(xiàn)代碼

    Java組件FileUpload上傳文件實(shí)現(xiàn)代碼

    這篇文章主要為大家詳細(xì)介紹了Java組件FileUpload上傳文件實(shí)現(xiàn)代碼,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2016-06-06
  • Java讀取txt文件和寫入txt文件的簡(jiǎn)單實(shí)例

    Java讀取txt文件和寫入txt文件的簡(jiǎn)單實(shí)例

    下面小編就為大家?guī)硪黄狫ava讀取txt文件和寫入txt文件的簡(jiǎn)單實(shí)例。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2016-11-11
  • 通過實(shí)例解析Spring Ioc項(xiàng)目實(shí)現(xiàn)過程

    通過實(shí)例解析Spring Ioc項(xiàng)目實(shí)現(xiàn)過程

    這篇文章主要介紹了Spring Ioc項(xiàng)目實(shí)踐過程詳解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-06-06

最新評(píng)論