迪霸戈 2024-06-03 10:49 采纳率: 50%
浏览 23
已结题

postman测试接口带了token也一直请求不通

springboot+shiro框架,postman测试接口带了token也一直请求不通
我在浏览器登录后请求一个查询接口,然后再在postman测试(get请求)带token,一直进shiro的onAccessDenied方法的subject.isAuthenticated()=false

img

token是从浏览器拿到postman的,但是在postman就还得我登录,问题出现在哪里

img

img

  • 写回答

3条回答 默认 最新

  • 专家-赤兔[在线] 全栈领域优质创作者 2024-06-03 10:51
    关注

    引自免费微信小程序:皆我百晓生

    看起来你在使用Spring Boot和Apache Shiro进行权限管理,并且遇到了在Postman中发送带有JWT令牌的GET请求时,Shiro始终返回未认证的问题。这可能是由于几个原因导致的,包括但不限于:JWT令牌处理的配置错误、请求头处理不当或跨域设置问题。

    首先,检查一下以下几个方面:

    1. JWT解析器配置: 确保你已经在Spring Boot应用中正确配置了JWT解析器。在Shiro的配置类(通常是ShiroConfig.java)中,你应该有一个对JwtRealm的实例化,其中包含对JWT的解码逻辑。确保这里配置了正确的密钥,例如:
    @Bean
    public JwtRealm jwtRealm() {
        JwtRealm realm = new JwtRealm();
        realm.setTokenSalt("your_token_salt");
        realm.setJwtCookieName("your_jwt_cookie_name");
        realm.setJwtHeaderName("Authorization");
        realm.setJwtKey("your_jwt_secret_key");
        return realm;
    }
    
    1. 跨域配置: 检查你的WebConfig或其他相关配置文件,确保启用了跨域访问,并允许携带cookies。在WebConfig.java中添加以下代码:
    @Configuration
    @EnableWebMvc
    public class WebConfig implements WebMvcConfigurer {
    
        @Override
        public void addCorsMappings(CorsRegistry registry) {
            registry.addMapping("/**")
                    .allowedOrigins("*") // 如果生产环境,替换为特定域名
                    .allowedMethods("*")
                    .allowedHeaders("*")
                    .allowCredentials(true);
        }
    }
    
    1. 请求头处理: 在Postman中,你需要将JWT令牌放在Authorization头部,并以Bearer前缀开始。在图3中的例子中,你已经正确设置了这个头。但确认一下在实际操作中是否正确应用到了请求上。

    2. 浏览器与Postman之间的区别: 浏览器发送的请求可能包含了额外的头信息,比如OriginUser-Agent等,而这些在Postman中可能不会自动添加。确保你在Postman中的请求头中包含了所有必要的信息。

    3. 安全上下文: 在Shiro的onAccessDenied方法中,如果subject.isAuthenticated()返回false,可能是因为请求的安全上下文没有正确地从浏览器传递到Postman。尝试在Postman中手动设置JSESSIONID cookie,这可能是Shiro用来跟踪会话的。

    4. 重新加载JWT: 如果你在浏览器中登录并获取了新的JWT,确保在Postman中使用的JWT是最新的。旧的JWT可能会因为过期或者已经被撤销而导致认证失败。

    如果你按照上述步骤检查后仍然存在问题,请提供更多的调试信息,比如详细的异常堆栈或更详细的Shiro配置,以便我能给出更具体的建议。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 6月11日
  • 已采纳回答 6月3日
  • 创建了问题 6月3日

悬赏问题

  • ¥30 YOLO检测微调结果p为1
  • ¥20 求快手直播间榜单匿名采集ID用户名简单能学会的
  • ¥15 DS18B20内部ADC模数转换器
  • ¥15 做个有关计算的小程序
  • ¥15 MPI读取tif文件无法正常给各进程分配路径
  • ¥15 如何用MATLAB实现以下三个公式(有相互嵌套)
  • ¥30 关于#算法#的问题:运用EViews第九版本进行一系列计量经济学的时间数列数据回归分析预测问题 求各位帮我解答一下
  • ¥15 setInterval 页面闪烁,怎么解决
  • ¥15 如何让企业微信机器人实现消息汇总整合
  • ¥50 关于#ui#的问题:做yolov8的ui界面出现的问题