文章目录
代码来源:Springboot token令牌验证解决方案 在SpringBoot实现基于Token的用户身份验证
代码1:annotation/token
@Target({
ElementType.METHOD, ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
public @interface PassToken {
}
@Target用于描述注解的使用范围
/**用于描述类、接口(包括注解类型) 或enum声明*/ TYPE, /** 用于描述域 Field declaration (includes enum constants) */ FIELD, /**用于描述方法 Method declaration */ METHOD,
@Retention定义了该Annotation被保留的时间长短
RUNTIME:在运行时有效(即运行时保留)
3、整段代码含义:定义一个叫PassToken
的注解,可以用在标记其他类和方法,并且这个注解是运行时有效的
4、 token 验证的机制(流程)
用户登录校验,校验成功后就返回Token给客户端。
客户端收到数据后保存在客户端
客户端每次访问API是携带Token到服务器端。
服务器端采用filter过滤器校验。
校验成功则返回请求数据,校验失败则返回错误码
5、token的pom依赖:jwt
<dependency>
<groupId>com.auth0</groupId>
<artifactId>java-jwt</artifactId>
<version>3.4.0</version>
</dependency>
代码2:config/interceptor
新建一个拦截器配置,用于拦截前端请求,实现 WebMvcConfigurer
8 @Configuration
9 public class InterceptorConfig implements WebMvcConfigurer {
10 @Override
11 public void addInterceptors(InterceptorRegistry registry) {
12 registry.addInterceptor(authenticationInterceptor())
13 .addPathPatterns("/**"); // 拦截所有请求,通过判断是否有 @LoginRequired 注解 决定是否需要登录
14 }
15 @Bean
16 public AuthenticationInterceptor authenticationInterceptor() {
17