创建 tokenPathInterceptor 的 bean,示例代码如下
@Bean
public void tokenPathInterceptor() {
Solon.app().before(new SaTokenPathInterceptor()
// 指定 [拦截路由] 与 [放行路由]
.addInclude("/**/v1/**")
// 认证函数: 每次请求执行
.setAuth(r -> {
SaRouter.match("/**/v1/**", StpUtil::checkLogin);
SaRouter.match("/**/v1/**")
.notMatch("/user/v1/**", "/**/v1/static/**")
.check(c -> {
// 获取当前登录的角色是否为超级管理员,如果是则停止处理
SysRole role = (SysRole) StpUtil.getSession().get("role");
if (Solon.cfg().get("auth.work.roleAdmin").equals(role.getRoleCode())) {
c.stop();
}
// 获取权限列表,roleAuthCode为Map<String, List<String>>类型,
// key为角色编码,list为权限集合,为path路径,
// 可在启动的时候初始化查询一下,修改、增加、删除角色权限的时候在初始化一下
List<String> strings = InitConfig.roleAuthCode.get(role.getRoleCode());
if (null == strings || !strings.contains(Context.current().path())) {
throw new ServiceException("无权限");
}
});
}));
}
请登录后查看回复内容