SpringSecurity多认证体系实现

本文详细介绍了如何在SpringSecurity框架中实现企业微信登录的多认证体系,包括自定义Token、过滤器、Provider以及如何将这些组件集成到认证流程中,提升系统的可读性和扩展性。

SpringSecurity多认证体系实现之企业微信登录

1.SpringSecurity认证流程

花了两天时间大致的了解了一下SpringSecurity的认证逻辑,大致流程如下图所示。想详细了解可自行阅读源码

2.自定义认证

springsecurity已经为我们实现了账户密码登录认证逻辑,我们可仿照其原理来实现自定义认证

2.1自定义Token

这里以企业微信号登录为例,实现SpringSecurity多认证体系

public class SmsCodeAuthToken extends UsernamePasswordAuthenticationToken {
   
   
    public SmsCodeAuthToken(Object principal, Object credentials) {
   
   
        super(principal, credentials);
    }

    public SmsCodeAuthToken(Object principal, Object credentials,
                            Collection<? extends GrantedAuthority> authorities)     {
   
   
        super(principal, credentials, authorities);
    }
}
2.2自定义过滤器

在多认证体系下,对不同登录方式需要用到不同的处理器去处理该请求,所以需要针对不同的请求来进行自定义过滤

public class WechatCpAuthFilter extends AbstractAuthenticationProcessingFilter {
   
   

    private boolean postOnly = true;
    private AuthenticationEntryPoint authenticationEntryPoint;
    private JWTAuthService jwtAuthService;
    private UsersService userService;
    private RedisUtil redisUtil;

    public WechatCpAuthFilter(AuthenticationManager authManager, JWTAuthService jwtAuthService,
                             UsersService userService, AuthenticationEntryPoint authenticationEntryPoint, RedisUtil redisUtil) {
   
   
        // 处理微信登录请求
        super(new AntPathRequestMatcher("/api/auth/wechat/cp/login", "POST"));
        this.setAuthenticationManager(authManager);
        this.jwtAuthService = jwtAuthService;
        this.userService = userService;
        this.authenticationEntryPoint = authenticationEntryPoint;
        this.redisUtil = redisUtil;
    }

    @Override
    public Authentication attemptAuthentication(HttpServletRequest request
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值