feat: 支持redis-token和单设备登录

This commit is contained in:
wangtaocs
2025-03-06 17:30:16 +08:00
parent cc78cb8b21
commit e77d110b38
9 changed files with 247 additions and 42 deletions

View File

@@ -10,9 +10,9 @@ import com.youlai.boot.core.security.exception.MyAuthenticationEntryPoint;
import com.youlai.boot.core.security.extension.sms.SmsAuthenticationProvider;
import com.youlai.boot.core.security.extension.wechat.WechatAuthenticationProvider;
import com.youlai.boot.core.security.filter.CaptchaValidationFilter;
import com.youlai.boot.core.security.filter.JwtAuthenticationFilter;
import com.youlai.boot.core.security.filter.TokenFilter;
import com.youlai.boot.core.security.manager.TokenManager;
import com.youlai.boot.core.security.service.SysUserDetailsService;
import com.youlai.boot.core.security.manager.JwtTokenManager;
import com.youlai.boot.system.service.ConfigService;
import com.youlai.boot.system.service.UserService;
import lombok.RequiredArgsConstructor;
@@ -48,7 +48,7 @@ public class SecurityConfig {
private final RedisTemplate<String, Object> redisTemplate;
private final PasswordEncoder passwordEncoder;
private final JwtTokenManager jwtTokenService;
private final TokenManager tokenManager;
private final WxMaService wxMaService;
private final UserService userService;
private final SysUserDetailsService userDetailsService;
@@ -93,8 +93,8 @@ public class SecurityConfig {
.addFilterBefore(new RateLimiterFilter(redisTemplate, configService), UsernamePasswordAuthenticationFilter.class)
// 验证码校验过滤器
.addFilterBefore(new CaptchaValidationFilter(redisTemplate, codeGenerator), UsernamePasswordAuthenticationFilter.class)
// JWT 验证和解析过滤器
.addFilterBefore(new JwtAuthenticationFilter(jwtTokenService), UsernamePasswordAuthenticationFilter.class)
// 验证和解析过滤器
.addFilterBefore(new TokenFilter(tokenManager), UsernamePasswordAuthenticationFilter.class)
.build();
}

View File

@@ -25,6 +25,11 @@ public class SecurityProperties {
*/
private JwtProperty jwt;
/**
* Redis-Token 配置
*/
private RedisTokenProperty redisToken;
/**
* 白名单 URL 集合
*/
@@ -62,4 +67,22 @@ public class SecurityProperties {
private Integer refreshTokenTimeToLive;
}
@Data
public static class RedisTokenProperty {
/**
* 是否允许多点登录
*/
private Boolean multiLogin;
/**
* 访问令牌有效期(单位:秒)
*/
private Integer accessTokenTimeToLive;
/**
* 刷新令牌有效期(单位:秒)
*/
private Integer refreshTokenTimeToLive;
}
}