最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

背景

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

流程圖

簡單代碼說明

自定義一套 springsecurity 認證邏輯

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

// 自定義 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);

? ? ? ? // 此時鑒權成功后,應當重新 new 一個擁有鑒權的 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);
? ? }

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

相關文章

  • Spring Boot2中如何優(yōu)雅地個性化定制Jackson實現(xiàn)示例

    Spring Boot2中如何優(yōu)雅地個性化定制Jackson實現(xiàn)示例

    這篇文章主要為大家介紹了Spring Boot2中如何優(yōu)雅地個性化定制Jackson實現(xiàn)示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-05-05
  • Java鎖競爭導致sql慢日志原因分析

    Java鎖競爭導致sql慢日志原因分析

    這篇文章主要介紹了Java鎖競爭導致sql慢的日志原因分析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習吧
    2022-11-11
  • JDBC中使用Java8的日期LocalDate和LocalDateTime操作mysql、postgresql

    JDBC中使用Java8的日期LocalDate和LocalDateTime操作mysql、postgresql

    這篇文章主要給大家介紹了關于JDBC中如何使用Java8的日期LocalDate和LocalDateTime的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧。
    2017-09-09
  • JAVA中的注解機制解讀

    JAVA中的注解機制解讀

    這篇文章主要介紹了JAVA中的注解機制解讀,通過調用Java的反射機制相關API來訪問annotation信息,首先加載使用注解的類,得到class類,然后再得到類相應的方法,成員變量,需要的朋友可以參考下
    2023-10-10
  • Java面向對象程序設計多態(tài)性示例

    Java面向對象程序設計多態(tài)性示例

    這篇文章主要介紹了Java面向對象程序設計多態(tài)性,結合實例形式分析了java多態(tài)性的概念、原理、定義與使用方法及相關注意事項,需要的朋友可以參考下
    2018-03-03
  • Redis實現(xiàn)商品秒殺功能頁面流程

    Redis實現(xiàn)商品秒殺功能頁面流程

    這篇文章主要介紹了Redis實現(xiàn)商品秒殺功能的方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2022-09-09
  • 詳解SpringMVC中的四種跳轉方式、視圖解析器問題

    詳解SpringMVC中的四種跳轉方式、視圖解析器問題

    這篇文章主要介紹了SpringMVC的四種跳轉方式、視圖解析器,springmvc核心配置文件和視圖解析器的使用,添加視圖解析器,通過案例講解四種跳轉方式,需要的朋友可以參考下
    2022-10-10
  • IDEA配置Tomcat創(chuàng)建web項目的詳細步驟

    IDEA配置Tomcat創(chuàng)建web項目的詳細步驟

    Tomcat是一個Java?Web應用服務器,實現(xiàn)了多個Java?EE規(guī)范(JSP、Java?Servlet等),這篇文章主要給大家介紹了關于IDEA配置Tomcat創(chuàng)建web項目的詳細步驟,需要的朋友可以參考下
    2023-12-12
  • Java的函數(shù)式接口@FunctionalInterface的使用說明

    Java的函數(shù)式接口@FunctionalInterface的使用說明

    這篇文章主要介紹了Java的函數(shù)式接口@FunctionalInterface的使用說明,我們常用的一些接口Callable、Runnable、Comparator等在JDK8中都添加了@FunctionalInterface注解,需要的朋友可以參考下
    2024-01-01
  • JAVA實現(xiàn)二維碼生成加背景圖代碼實例

    JAVA實現(xiàn)二維碼生成加背景圖代碼實例

    這篇文章主要介紹了JAVA實現(xiàn)二維碼生成加背景圖代碼實例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2019-12-12

最新評論

乌鲁木齐县| 华宁县| 临夏市| 平谷区| 开远市| 北碚区| 苗栗市| 巴楚县| 西乌珠穆沁旗| 木兰县| 宜黄县| 婺源县| 来安县| 辉县市| 调兵山市| 布拖县| 安阳市| 静海县| 东港市| 安康市| 鸡西市| 隆回县| 乌恰县| 汪清县| 芦山县| 大名县| 万安县| 司法| 竹溪县| 如皋市| 巴林左旗| 三亚市| 纳雍县| 比如县| 县级市| 革吉县| 临高县| 武穴市| 富民县| 唐海县| 安远县|