49 lines
1.8 KiB
Java
Raw Normal View History

2025-04-14 09:35:36 +08:00
package com.cdzy.gateway.config;
import cn.dev33.satoken.reactor.filter.SaReactorFilter;
import cn.dev33.satoken.router.SaRouter;
import cn.dev33.satoken.stp.StpUtil;
import com.cdzy.common.model.JsonResult;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
/**
* @author attiya
* @since 2025-03-18
*/
@Configuration
public class SaTokenConfigure {
@Value("${sa-token.is-check}")
private Boolean isCheck;
// 注册 Sa-Token全局过滤器
@Bean
public SaReactorFilter getSaReactorFilter() {
return new SaReactorFilter()
// 拦截地址
.addInclude("/**") /* 拦截全部path */
// 开放地址
2025-06-03 10:42:21 +08:00
.addExclude("/order/**")
2025-04-14 09:35:36 +08:00
// 鉴权方法:每次访问进入
.setAuth(obj -> {
if (isCheck) {
// 登录校验 -- 拦截所有路由,并排除/user/doLogin 用于开放登录
SaRouter.match("/**", "/user/auth/loginByPwd", r -> StpUtil.checkLogin());
}
// 权限认证 -- 不同模块, 校验不同权限
// SaRouter.match("/user/**", r -> StpUtil.checkPermission("user"));
// SaRouter.match("/admin/**", r -> StpUtil.checkPermission("admin"));
// SaRouter.match("/goods/**", r -> StpUtil.checkPermission("goods"));
// SaRouter.match("/orders/**", r -> StpUtil.checkPermission("orders"));
// 更多匹配 ... */
})
// 异常处理方法每次setAuth函数出现异常时进入
2025-06-03 10:42:21 +08:00
.setError(e -> JsonResult.failed(e.getMessage()));
2025-04-14 09:35:36 +08:00
}
}