This commit is contained in:
lixiaodong
2023-07-13 20:15:41 +08:00
parent 54d8d9489a
commit ac6921a278
11 changed files with 102 additions and 65 deletions

View File

@@ -19,7 +19,6 @@ import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.List;
import java.util.Objects;
/**
* 抽象拦截器

View File

@@ -1,5 +1,6 @@
package net.lab1024.sa.common.config;
import cn.dev33.satoken.interceptor.SaInterceptor;
import net.lab1024.sa.common.common.interceptor.AbstractInterceptor;
import org.apache.commons.collections4.CollectionUtils;
import org.springframework.beans.factory.annotation.Autowired;
@@ -26,14 +27,24 @@ public class MvcConfig implements WebMvcConfigurer {
@Autowired(required = false)
private List<AbstractInterceptor> interceptorList;
@Autowired(required = false)
private List<SaInterceptor> saInterceptorList;
@Override
public void addInterceptors(InterceptorRegistry registry) {
if (CollectionUtils.isEmpty(interceptorList)) {
return;
// 先注册 登录拦截器
if (CollectionUtils.isNotEmpty(interceptorList)) {
interceptorList.forEach(e -> {
registry.addInterceptor(e).addPathPatterns(e.pathPatterns()).excludePathPatterns(e.getIgnoreUrlList());
});
}
// 后注册 sa-token 权限拦截器 不需要可以删除
if (CollectionUtils.isNotEmpty(saInterceptorList)) {
saInterceptorList.forEach(i -> {
registry.addInterceptor(i).addPathPatterns("/**");
});
}
interceptorList.forEach(e -> {
registry.addInterceptor(e).addPathPatterns(e.pathPatterns()).excludePathPatterns(e.getIgnoreUrlList());
});
}
@Override

View File

@@ -34,7 +34,7 @@ public class UrlConfig {
@Autowired
private RequestMappingHandlerMapping requestMappingHandlerMapping;
public static List<String> URL_LIST = Lists.newArrayList();
public static List<String> AUTH_URL_LIST = Lists.newArrayList();
/**
* 获取每个方法的请求路径
@@ -74,8 +74,15 @@ public class UrlConfig {
if (null != ignore) {
continue;
}
List<RequestUrlVO> requestUrlList = this.buildRequestUrl(method, entry.getValue());
NoNeedLogin noNeedLogin = method.getAnnotation(NoNeedLogin.class);
if (null != noNeedLogin) {
continue;
}
Set<String> urlSet = entry.getValue();
List<RequestUrlVO> requestUrlList = this.buildRequestUrl(method, urlSet);
authUrlList.addAll(requestUrlList);
AUTH_URL_LIST.addAll(urlSet);
}
log.info("需要权限校验的URL{}", authUrlList.stream().map(RequestUrlVO::getUrl).collect(Collectors.toList()));
return authUrlList;
@@ -98,8 +105,6 @@ public class UrlConfig {
requestUrlVO.setUrl(url);
requestUrlVO.setComment(methodComment);
requestUrlList.add(requestUrlVO);
URL_LIST.add(url);
}
return requestUrlList;
}

View File

@@ -9,13 +9,10 @@ import org.springframework.stereotype.Component;
import java.util.List;
/**
* 用户token相关服务
* 用户token 相关服务
*
* @Author 1024创新实验室-主任: 卓大
* @Date 2021-11-29 19:48:35
* @Wechat zhuoda1024
* @Email lab1024@163.com
* @Copyright 1024创新实验室 https://1024lab.net
* @author listen
* @date 2023-07-12 22:48:35
*/
@Component
public class TokenService {
@@ -63,6 +60,10 @@ public class TokenService {
return Long.valueOf(loginId.substring(loginId.indexOf(StringConst.HORIZONTAL) + 1));
}
public static Integer getUserType(String loginId) {
return Integer.valueOf(loginId.substring(0, loginId.indexOf(StringConst.HORIZONTAL)));
}
/**
* 退出登录 注销
*/

View File

@@ -131,12 +131,20 @@ sa-token:
# token 有效期(单位:秒) 默认30天-1 代表永久有效
timeout: 2592000
# token 最低活跃频率(单位:秒),如果 token 超过此时间没有访问系统就会被冻结,默认-1 代表不限制,永不冻结
active-timeout: 28800
active-timeout: -1
# 是否允许同一账号多地同时登录 (为 true 时允许一起登录, 为 false 时新登录挤掉旧登录)
is-concurrent: false
# 在多人登录同一账号时,是否共用一个 token (为 true 时所有登录共用一个 token, 为 false 时每次登录新建一个 token(jwt模式下恒false)
is-share: false
# token 风格默认可取值uuid、simple-uuid、random-32、random-64、random-128、tik(jwt模式下无用)
token-style: simple-uuid
# 是否打开自动续签 如果此值为true框架会在每次直接或间接调用 getLoginId() 时进行一次过期检查与续签操作)
auto-renew: true
# 是否输出操作日志
is-log: true
is-log: true
# 日志等级trace、debug、info、warn、error、fatal
log-level: debug
# 启动时的字符画打印
is-print: false
# 是否从cookie读取token
is-read-cookie: false