iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >springsecurity企业微信登入的实现示例
  • 265
分享到

springsecurity企业微信登入的实现示例

2024-04-02 19:04:59 265人浏览 薄情痞子

Python 官方文档:入门教程 => 点击学习

摘要

背景 后台系统需要接入 企业微信登入,满足企业员工快速登入系统 流程图 简单代码说明 自定义一套 springsecurity 认证逻辑 主要就是 根据code 获取绑定用户信息

背景

后台系统需要接入 企业微信登入,满足企业员工快速登入系统

流程图

简单代码说明

自定义一套 springsecurity 认证逻辑

主要就是 根据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 企业微信登入的实现示例的文章就介绍到这了,更多相关springsecurity 企业微信登入内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: springsecurity企业微信登入的实现示例

本文链接: https://www.lsjlt.com/news/146103.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • springsecurity企业微信登入的实现示例
    背景 后台系统需要接入 企业微信登入,满足企业员工快速登入系统 流程图 简单代码说明 自定义一套 springsecurity 认证逻辑 主要就是 根据code 获取绑定用户信息 ...
    99+
    2024-04-02
  • .NET Core企业微信网页授权登录的实现
    目录1.开发前准备参数获取2.企业微信OAuth2接入流程3.构造网页授权链接4. 调用代码部分4.1 appsettings配置4.2 配置IHttpClientFactory调用...
    99+
    2024-04-02
  • Android实现微信登录的示例代码
    目录一、布局界面二、MainActivity.java微信登录的实现与qq登录类似。不过微信登录比较麻烦,需要拿到开发者资质认证,花300块钱,然后应用的话还得有官网之类的,就是比较...
    99+
    2024-04-02
  • Java微信授权登陆的实现示例
    前提: 微信公众平台:注册微信认证的公众号也就是服务号 ,拥有跟高级权限的微信接口。(注册服务号需要一些企业信息,需自己或者公司解决) 注: 2018年12月起 订阅号不能认证升级为...
    99+
    2024-04-02
  • SpringBoot中集成企业微信机器人实现运维报警的示例
    目录1、注册企业微信2、添加群机器人3、引入 forest 依赖4、请求方法5、发送消息6、测试在企业运营中,为了实现工作效率和执行效率的提升,往往会选择在社群中使用群聊机器人进行协...
    99+
    2024-04-02
  • 企业微信扫码登录网页功能实现代码
    企业微信扫码登录网页功能,代码如下所示: //jq写法完善版 <!DOCTYPE html> <html lang="en"> <head> ...
    99+
    2024-04-02
  • Java实现企业微信回调配置
    在使用前阅读官方文档:回调配置文档 一、配置回调服务 一、在企业微信管理后台配置三个配置 分别是:URL, Token, EncodingAESKey。打开企业微信后台-->管理工具-->通讯录同步配置回调地址如下所示 1.1、URL...
    99+
    2023-09-01
    企业微信 java spring boot spring cloud
  • .NET Core实现企业微信消息推送
    接口定义 应用支持推送文本、图片、视频、文件、图文等类型。请求方式:POST(HTTPS)请求地址: https://qyapi.weixin.qq.com/cgi-bin...
    99+
    2024-04-02
  • 微信小程序实现登录界面示例
    本文实例为大家分享了微信小程序实现登录界面的具体代码,供大家参考,具体内容如下 注:这里使用的是原生微信小程序 使用wxss和wxml index.wxml文件中代码 <vie...
    99+
    2024-04-02
  • Springboot+SpringSecurity实现图片验证码登录的示例
    这个问题,网上找了好多,结果代码都不全,找了好多,要不是就自动注入的类注入不了,编译报错,要不异常捕获不了浪费好多时间,就觉得,框架不熟就不能随便用,全是坑,气死我了,最后改了两天....
    99+
    2024-04-02
  • nodejs开发企业微信第三方应用的示例分析
    小编给大家分享一下nodejs开发企业微信第三方应用的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!一、注册第三发服务商...
    99+
    2024-04-02
  • 使用Python实现企业微信通知功能案例分析
    目录前言1、新建应用2、获取Secret3、代码实现4、实现效果:前言 常见的通知方式有:邮件,电话,短信,微信。短信和电话:通常是收费的,较少使用;邮件:适合带文件类型的通知,较正...
    99+
    2024-04-02
  • java如何对接企业微信的实现步骤
    目录前言企业微信介绍调用企业微信api对接企业微信的回调前言 最近实现社群对接企业微信,对接的过程遇到一些点,在此记录。 企业微信介绍 企业微信具有和微信一样的体验,用于企业内部成员...
    99+
    2024-04-02
  • .NETCore实现企业微信获取部门成员
    1.获取部门成员 请求方式:GET(HTTPS)请求地址:https://qyapi.weixin.qq.com/cgi-bin/user/simplelistaccess_toke...
    99+
    2024-04-02
  • Django + Taro 前后端分离项目实现企业微信登录功能
    目录前言两种方式思路后端代码企业微信应用配置前端代码参考资料前言 还是最近在做的一个小项目,后端用的是Django搭配RestFramework做接口,前端第一次尝试用京东开源的Ta...
    99+
    2024-04-02
  • Python如何实现获取微信企业号access_token的Class
    小编给大家分享一下Python如何实现获取微信企业号access_token的Class,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一...
    99+
    2024-04-02
  • java对接企业微信的实现步骤是什么
    这篇文章给大家介绍java对接企业微信的实现步骤是什么,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。前言最近实现社群对接企业微信,对接的过程遇到一些点,在此记录。企业微信介绍企业微信具有和微信一样的体验,用于企业内部成...
    99+
    2023-06-26
  • .NET Core如何实现企业微信消息推送
    这篇文章主要介绍了.NET Core如何实现企业微信消息推送的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇.NET Core如何实现企业微信消息推送文章都会有所收获,下面我们一起来看看吧。接...
    99+
    2023-07-02
  • SpringSecurity整合springBoot、redis实现登录互踢功能的示例
    这篇文章主要介绍了SpringSecurity整合springBoot、redis实现登录互踢功能的示例,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。背景要实现的功能是要实现...
    99+
    2023-06-15
  • Android仿微信布局的实现示例
    目前没有实现微信的功能,只是对微信的各个界面的调动以及对通讯录,发现和我中各个按钮的设置,同时如果你想尝试给微信中各个按钮背后添加功能时间可以用此作为模板哦,如拍照,朋友圈的添加都可...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作