Solon Sa-Token的权限验证示例-Solon论坛-开发交流-祥拓软件

Solon Sa-Token的权限验证示例

  • 创建 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("无权限");
                                    }
                                });
                    }));
        }
请登录后发表评论

    请登录后查看回复内容