swagger和jwt整合问题笔记

1、引入 swagger开发包

      增加pom文件配置

        <dependency>
            <groupId>io.springfox</groupId>
            <artifactId>springfox-swagger2</artifactId>
            <version>2.6.1</version>
        </dependency>
        <dependency>
            <groupId>io.springfox</groupId>
            <artifactId>springfox-swagger-ui</artifactId>
            <version>2.6.1</version>
        </dependency>
        <!--解決错误 swagger  com/fasterxml/jackson/annotation/JsonInclude$Value -->
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-annotations</artifactId>
            <version>2.9.7</version>
        </dependency>

       <dependency>
                <groupId>io.jsonwebtoken</groupId>
                <artifactId>jjwt</artifactId>
                <version>0.7.0</version>
            </dependency>

2、配置swagger

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.EnableWebMvc;
import springfox.documentation.builders.ApiInfoBuilder;
import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.service.ApiInfo;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2;


@Configuration
@EnableSwagger2
@EnableWebMvc
@ComponentScan(basePackages = "sh.business.web.controller")
public class SwaggerConfig {
    @Bean
    public Docket api() {
        return new Docket(DocumentationType.SWAGGER_2)
                .select()
                .apis(RequestHandlerSelectors.any())
                .build()
                .apiInfo(apiInfo());
    }

    private ApiInfo apiInfo() {
        return new ApiInfoBuilder()
                .title("****")
                .description("*****)
                .version("1.0.0")
                .termsOfServiceUrl("")
                .license("")
                .licenseUrl("")
                .build();
    }
}

3JWT拦截器配置

public class AppInterceptor implements HandlerInterceptor {

    private static final Logger logger = Logger.getLogger(AppInterceptor.class);

    @Override
    public void afterCompletion(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2, Exception arg3)
            throws Exception {

    }

    @Override
    public void postHandle(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2, ModelAndView arg3)
            throws Exception {

    }

    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
            throws Exception {
        response.setContentType("text/html;charset=UTF-8");
        // 请求URL
        String url = request.getServletPath().toString();

        System.out.println("URL:>>>>>>>>>>>>>>>>" + url);
        // 用戶登录
        if (url.contains("/user/login")) {
            return true;
        }
        // 用户注册
        if (url.contains("/user/register")) {
            return true;
        }
        // 获取token
        if (url.contains("/token/gettoken")) {
            return true;
        }
        // swagger
        if (url.contains("/swagger-resources")) {
            return true;
        }
        // swagger
        if (url.contains("/v2/api-docs")) {
            return true;
        }
        String tokenStr = request.getParameter("token");
        if (tokenStr == null || tokenStr.equals("")) {
            PrintWriter printWriter = response.getWriter();
            printWriter.print(ResponseMgr.noLogin());
            printWriter.flush();
            printWriter.close();
            return false;
        }

        // 验证JWT的签名,返回CheckResult对象
        CheckResult checkResult = TokenMgr.validateJWT(tokenStr);
        if (checkResult.isSuccess()) {
            Claims claims = checkResult.getClaims();
            logger.info("token校检通过checkResult:" + GsonUtil.objectToJsonStr(checkResult));
            SubjectModel user = GsonUtil.jsonStrToObject(claims.getSubject(), SubjectModel.class);
            logger.info("token校检通过user:" + GsonUtil.objectToJsonStr(user));
            return true;
        } else {
            switch (checkResult.getErrCode()) {
            // 签名过期,返回过期提示码
            case Constant.JWT_ERRCODE_EXPIRE:
                PrintWriter printWriter = response.getWriter();
                printWriter.print(ResponseMgr.loginExpire());
                printWriter.flush();
                printWriter.close();
                break;
            // 签名验证不通过
            case Constant.JWT_ERRCODE_FAIL:
                PrintWriter printWriter2 = response.getWriter();
                printWriter2.print(ResponseMgr.noAuth());
                printWriter2.flush();
                printWriter2.close();
                break;
            default:
                break;
            }
            return false;
        }
    }

}
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值