1K Star 46K Fork 3.6K

GVPdromara / Sa-Token

 / 详情

在gateway中按照官网配置了SaTokenConfigure类,访问开放接口报500,defaultInstance

已完成
创建于  
2024-04-01 13:55

请在以下地址复制 issue 模板进行提交:
https://sa-token.cc/doc.html#/fun/issue-template

评论 (4)

杨小松 创建了任务

看看依赖引对了吗 所有sa-token相关依赖版本号对齐了吗

这下面是gateway的依赖

        <!-- Sa-Token 权限认证(Reactor响应式集成), 在线文档:https://sa-token.cc -->
        <dependency>
            <groupId>cn.dev33</groupId>
            <artifactId>sa-token-reactor-spring-boot-starter</artifactId>
            <version>1.37.0</version>
        </dependency>

        <!-- Sa-Token 整合 Redis (使用 jackson 序列化方式) -->
        <dependency>
            <groupId>cn.dev33</groupId>
            <artifactId>sa-token-redis-jackson</artifactId>
            <version>1.37.0</version>
        </dependency>
        <dependency>
            <groupId>org.apache.commons</groupId>
            <artifactId>commons-pool2</artifactId>
        </dependency>

这个是oauth的依赖

        <dependency>
            <groupId>cn.dev33</groupId>
            <artifactId>sa-token-spring-boot-starter</artifactId>
            <version>1.37.0</version>
        </dependency>
        <!-- Sa-Token 整合 Redis (使用 jackson 序列化方式) -->
        <dependency>
            <groupId>cn.dev33</groupId>
            <artifactId>sa-token-redis-jackson</artifactId>
            <version>1.37.0</version>
        </dependency>

然后我在gateway配置的

   return new SaReactorFilter()
                // 拦截地址
                .addInclude("/**")
                // 开放地址
                .addExclude("/oauth/user/login")
                // 鉴权方法:每次访问进入
                .setAuth(obj -> {
                    SaRouter.match("/events/**").check(r -> {

                    });
                    SaRouter.match("/admin/**").check(r -> {

                    });
                    SaRouter.match("/advertisement/**").check(r -> {

                    });
                    SaRouter.match("/award/**").check(r -> {
                    });

                })
                // 异常处理方法:每次setAuth函数出现异常时进入
                .setError(e -> {
                    // 设置错误返回格式为JSON
                    ServerWebExchange exchange = SaReactorSyncHolder.getContext();
                    exchange.getResponse().getHeaders().set("Content-Type", "application/json; charset=utf-8");
//                    return new ResultJsonUtil().fail(e.getMessage());
                    return SaResult.error(e.getMessage());
                })

然后我访问了oauth的服务

{
    "code": 500,
    "msg": "defaultInstance",
    "data": null
}

如果我把上面的配置.addInclude("/**")这一行注释掉 就能访问到oauth那个接口 并有返回

问题已找到,spring boot版本与cloud版本低 升级版本 希望遇到同样问题的小伙伴同样处理就行

参考解决
输入图片说明

刘潇 任务状态待办的 修改为已完成

登录 后才可以发表评论

状态
负责人
里程碑
Pull Requests
关联的 Pull Requests 被合并后可能会关闭此 issue
分支
开始日期   -   截止日期
-
置顶选项
优先级
参与者(2)
1766140 sz6 1578959462
Java
1
https://gitee.com/dromara/sa-token.git
git@gitee.com:dromara/sa-token.git
dromara
sa-token
Sa-Token

搜索帮助