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

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

被折叠的 条评论
为什么被折叠?



