欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

SpringBoot+JWT+Shiro+Swagger2.0携带token的问题

程序员文章站 2022-07-02 17:51:43
...

问题说明

最近公司启动了一个新项目,项目使用无状态的连接方式所以使用了JWT来生成token,然后结合shiro做接口的安全验证,由于拦截器会对需要token验证的接口进行拦截,所以无法在swagger中测试接口的作用,也就失去了swagger的意义。所以需要保证在swagger访问时不带token,这才是最方便的



问题分析

需要达到目的,主要是修改依据token拦截的拦截器就行。在拦截器中添加如下代码。原理就是lz发现在swagger中发出的请求中Referer所对应的地址都是“http://localhost:8686/swagger-ui.html”字符串,所以只要是的话直接放行,header中的Referer代表的是当前请求是从哪一个网址过来的,例如你从百度跳转到腾讯,那跳转到腾讯的那一个请求中referer就是百度,lz是这样理解的。网上也有利用拦截器设置全局token的解决方式,个人认为还是我这种方式简单。

//*****放行swagger中需要携带token的接口 start*****
        String referer = httpServletRequest.getHeader("Referer");
        if (referer.equals("http://localhost:8686/swagger-ui.html")) {
            return true;
        }
        //*****放行swagger中需要携带token的接口 end*****

SpringBoot+JWT+Shiro+Swagger2.0携带token的问题


效果
SpringBoot+JWT+Shiro+Swagger2.0携带token的问题
说明:本文只是提供解决思路和主要代码,其他问题可以参考自行参考其他帖子