Spring Cloud Alibaba#30-32.巧用注解实现通用JWT校验

Spring Cloud Alibaba#30-32.巧用注解实现通用JWT校验

本文讲解在SpringBoot利用自定义注解实现通用的JWT校验方案

笔记对应学习视频:

https://www.itlaoqi.com/chapter/2672.html

本节我们将利用注解开发一个通用的JWT前置校验功能

设计的预期:

  • 系统中并不是所有的应用都需要JWT前置校验,这就需要额外设计一个注解Annotation来标识这个方法需要JWT前置校验.例如:

Spring Cloud Alibaba#30-32.巧用注解实现通用JWT校验

Article-Service改造步骤

  1. pom.xml引入JJWT

    Spring Cloud Alibaba#30-32.巧用注解实现通用JWT校验

     

  2. application.yml增加appkey秘钥

    Spring Cloud Alibaba#30-32.巧用注解实现通用JWT校验

    3.创建自定义注解@JwtToken

    Spring Cloud Alibaba#30-32.巧用注解实现通用JWT校验

    4.在ArticleController增加doSth测试方法

    Spring Cloud Alibaba#30-32.巧用注解实现通用JWT校验

    5.创建TokenInterceptor实现代码拦截JWTToken业务验证逻辑

    Spring Cloud Alibaba#30-32.巧用注解实现通用JWT校验

    Spring Cloud Alibaba#30-32.巧用注解实现通用JWT校验

    Spring Cloud Alibaba#30-32.巧用注解实现通用JWT校验

     

     6.启动应用,

Spring Cloud Alibaba#30-32.巧用注解实现通用JWT校验

Spring Cloud Alibaba#30-32.巧用注解实现通用JWT校验

 未包含Token请求头

Spring Cloud Alibaba#30-32.巧用注解实现通用JWT校验

 

包含Token请求头

Spring Cloud Alibaba#30-32.巧用注解实现通用JWT校验

required=false同样可以业务处理成功

7.将Token中包含的用户数据与业务逻辑绑定,如果Token验证成功,TokenInterceptor会把用户信息转为User对象放入当前请求$user属性中

之后在list方法中,使用@RequestArrtibute()进行提取即可.

Spring Cloud Alibaba#30-32.巧用注解实现通用JWT校验

 

ArticleService增加业务处理代码,根据用户级别查看不同的结果

Spring Cloud Alibaba#30-32.巧用注解实现通用JWT校验

ArticleMapper进行修改,增加level参数

Spring Cloud Alibaba#30-32.巧用注解实现通用JWT校验

 

至此业务代码改造完毕

用户未登录或普通用户只能看到ArticleType=1的普通文章

而VIP身份用户则可以看到所有文章