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

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

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

背景

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

流程圖

簡單代碼說明

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

主要就是 根據(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);

? ? ? ? // 此時(shí)鑒權(quán)成功后,應(yīng)當(dāng)重新 new 一個擁有鑒權(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)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

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

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

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

    Java鎖競爭導(dǎo)致sql慢日志原因分析

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

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

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

    JAVA中的注解機(jī)制解讀

    這篇文章主要介紹了JAVA中的注解機(jī)制解讀,通過調(diào)用Java的反射機(jī)制相關(guān)API來訪問annotation信息,首先加載使用注解的類,得到class類,然后再得到類相應(yīng)的方法,成員變量,需要的朋友可以參考下
    2023-10-10
  • Java面向?qū)ο蟪绦蛟O(shè)計(jì)多態(tài)性示例

    Java面向?qū)ο蟪绦蛟O(shè)計(jì)多態(tài)性示例

    這篇文章主要介紹了Java面向?qū)ο蟪绦蛟O(shè)計(jì)多態(tài)性,結(jié)合實(shí)例形式分析了java多態(tài)性的概念、原理、定義與使用方法及相關(guān)注意事項(xiàng),需要的朋友可以參考下
    2018-03-03
  • Redis實(shí)現(xiàn)商品秒殺功能頁面流程

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

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

    詳解SpringMVC中的四種跳轉(zhuǎn)方式、視圖解析器問題

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

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

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

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

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

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

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

最新評論

东山县| 温泉县| 灯塔市| 当涂县| 阳高县| 绥江县| 澜沧| 昭平县| 永川市| 黎平县| 江华| 奉化市| 永州市| 福海县| 涿州市| 梅河口市| 山阳县| 安国市| 万源市| 北海市| 荆门市| 临沭县| 河南省| 大同市| 铁岭县| 嘉兴市| 辉南县| 多伦县| 英山县| 石城县| 长葛市| 外汇| 英德市| 广河县| 沛县| 永德县| 天长市| 大渡口区| 荔波县| 肃南| 成武县|