创建token验证,手写spring-boot-starter(个人笔记,不严谨准确)
1.新创建空文件只保留pom.xml文件,将其作为父模块
pom文件依赖改为dependencyManagement用来管理子模块的依赖版本,spring-boot-starter-parent的版本设为常用的2.3.11版本
添加packaging设为pom
添加modules用来添加子模块
2.创建一个model模块,用来使用自定义异常类
首先将model模块的parent改为父模块
更改为 …/pom.xml
其余父模块已有的依赖不需要添加版本,但需要导入依赖
创建ResponseDTO类和BizException自定义异常类
ResponseDTO
BizException
私仓的settings.xml复制到C:/User/登录账户/.m2下
打包上传
3.创建token验证模块,pom大概与model模块一样修改,但需要在父模块里添加module
将上传的model模块导入进依赖
plugins添加以下,让程序打成jar包,并且将源码也打包上传
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-source-plugin</artifactId>
<version>3.1.0</version>
<executions>
<execution>
<id>attach-sources</id>
<phase>package</phase>
<goals>
<goal>jar</goal>
</goals>
</execution>
</executions>
</plugin>
在resource下创建META-INF文件夹然后在里面创建spring.factories,创建
TokenXConfiguration类,并在spring.factories中添加自动读取配置类TokenXConfiguration的全路径
创建一个properties类来配置token验证的部分参数和拦截器参数
@Configurationproperties用于获取配置文件中的属性定义并绑定到bean
属性中,prefix获取bean里属性的前缀,从配置文件中依靠前缀获取详细属性
key:token生成需要的密钥
enable:token验证的开关
pathPatterns:拦截器生效的路径
excludepathPatterns:拦截器不拦截的路径(白名单)
order:拦截器优先级别,越低越高
TokenXConfiguration导入WebConfig配置类,在运行时首先通过spring.factories找到它
在TokenXConfiguration上通过@ConditionalOnProperty来控制自动配置是否生效,
perfix:前缀名
value:”开关“的属性名
havingValue:value的值和此处判断是否相同,相同则配置生效
matchIfMissing:如果value没有值,true默认配置生效,false不生效
创建一个拦截器MyInterceptor
获取tokenkey生成的token
JWTUtil.verify(token, this.tokenKey.getBytes());
hutool工具的方法用来判断token是否正确
创建配置类WebConfig
注解导入TokenXProperties类
创建TokenXproperties类的对象
重写 添加一个拦截器,并将TokenXproperties里的拦截器配置属性添加到对应位置,excludePath是白名单中如果有多个路径,以 “ ,” 进行字符串分割,分为一个包含路径的集合 新创建一个含有tokenKey的拦截器,并添加到相应配置
打包上传!