代码拉取完成,页面将自动刷新
基于用户角色权限完成得后台管理框架,使用docker部署,前端基于vue-admin-template,权限认证采用sa-Token使用docker+nginx部署
https://gitee.com/falser/f-backstage
本项目基于Sa-token、Redis、Nacos、RabbitMq、Mybatis-plus、Mysql、SpringCloud-Alibaba-2.2.1.RELEASE、VUE
SaTokenConfigure.java
@Configuration
@Slf4j
public class SaTokenConfigure implements WebMvcConfigurer {
@Autowired
private RequestMappingHandlerMapping requestMappingHandlerMapping;
/**
* 注册拦截器
*
* @param registry 注册表
*/
@Override
public void addInterceptors(InterceptorRegistry registry) {
// 注册Sa-Token的路由拦截器,并排除登录接口或其他可匿名访问的接口地址 (与注解拦截器无关)
registry
.addInterceptor(new SaRouteInterceptor((req, res, handler) -> {
Map<RequestMappingInfo, HandlerMethod> handlerMethods = requestMappingHandlerMapping.getHandlerMethods();
log.info("请求地址:{},请求方法:{}", req.getRequestPath(), req.getMethod());
// 登录验证 -- 拦截所有路由,并排除/user/doLogin 用于开放登录
SaRouter.match("/**").notMatch(Arrays.asList("/api/auth/login",
"/api/auth/register",
"/doc.html",
"/swagger-ui.html",
"/favicon.ico",
"/**/*.html",
"/**/*.css",
"/**/*.js",
"/swagger-resources/**",
"/swagger-resources/**/**",
"/v2/api-docs",
"/v2/api-docs/**")).check(StpUtil::checkLogin);
// 终止过滤器链
SaRouter.match(Arrays.asList("/api/auth/login",
"/api/auth/register",
"/doc.html",
"/swagger-ui.html",
"/favicon.ico",
"/**/*.html",
"/**/*.css",
"/**/*.js",
"/swagger-resources/**",
"/swagger-resources/**/**",
"/v2/api-docs",
"/v2/api-docs/**")).stop();
handlerMethods.forEach(((requestMappingInfo, handlerMethod) -> {
Set<RequestMethod> methods = requestMappingInfo.getMethodsCondition().getMethods();
methods.forEach(requestMethod -> {
SaRouter.match(SaHttpMethod.valueOf(requestMethod.name()))
.match(new ArrayList<>(requestMappingInfo.getPatternsCondition().getPatterns()))
.check(() -> {
log.info("请求地址:{}", req.getMethod() + "#" + requestMappingInfo.getPatternsCondition().getPatterns().toArray()[0]);
StpUtil.checkPermission(req.getMethod() + "#" + requestMappingInfo.getPatternsCondition().getPatterns().toArray()[0]);
});
});
}));
})).addPathPatterns("/**");
}
}
gateway.yml
spring:
cloud:
gateway:
discovery:
locator:
enabled: true # 开启网关自动映射处理逻辑
routes:
- id: user
uri: lb://user
predicates:
- Path=/user/api/** # http://127.0.0.1:7000/api/getArgs 转换为 http://userservice/api/getArgs
filter:
- StripPrefix=1 # 删除/api http://userservice/api/getArgs
user.yml
spring:
redis:
# Redis数据库索引(默认为0)
database: 1
# Redis服务器地址
host:
# Redis服务器连接端口
port:
password:
# 连接超时时间
timeout: 10s
lettuce:
pool:
# 连接池最大连接数
max-active: 200
# 连接池最大阻塞等待时间(使用负值表示没有限制)
max-wait: -1ms
# 连接池中的最大空闲连接
max-idle: 10
# 连接池中的最小空闲连接
min-idle: 0
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url:
username:
password:
# Sa-Token配置
sa-token:
# token名称 (同时也是cookie名称)
token-name: satoken
# token有效期,单位s 默认30天, -1代表永不过期
timeout: 2592000
# token临时有效期 (指定时间内无操作就视为token过期) 单位: 秒
activity-timeout: -1
# 是否允许同一账号并发登录 (为true时允许一起登录, 为false时新登录挤掉旧登录)
is-concurrent: true
# 在多人登录同一账号时,是否共用一个token (为true时所有登录共用一个token, 为false时每次登录新建一个token)
is-share: false
# token风格
token-style: uuid
# 是否输出操作日志
is-log: false
mybatis-plus:
configuration:
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。