用户访问接口验证,如果用户没有登录,则不让他访问除登录外的任何接口。
实现思路:
1.前端登录,后端创建 token(通过 JWT 这个依赖),返给前端
2.前端访问其他接口,传递 token,后端判断 token 存在以或失效
3.失效或不存在,则返回失效提示,前端根据接口返回的失效提示,让其跳转到登录界面
目录
注解的作用说明 @Target 代表此注解,能 @到哪些代码上
返回值-全局异常类定义
程序员使用:方法不加注解,
测试程序员使用:加上,调用通过,
注解拓展:从请求中获取 token
注解定义
定义 2 个注解,1 个用于 任何接口都能访问 ,另外一个用于 需要登录才能访问
调用都通过注解
package com.example.etf.story.tools; import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; @Target({ElementType.METHOD, ElementType.TYPE}) @Retention(RetentionPolicy.RUNTIME) public @interface PassToken { boolean required() default true; }
登录才能通过
package com.example.etf.story.tools;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
@Target({ElementType.METHOD, ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
public @interface UserLoginToken {
boolean required() default true;
}
复制代码
注解的作用说明 @Target 代表此注解,能 @到哪些代码上
@Target :注解的作用目标
@Target(ElementType.TYPE) ——接口、类、枚举、注解 @Target(ElementType.FIELD) ——字段、枚举的常量 @Target(ElementType.METHOD) ——方法 @Target(ElementType.PARAMETER) ——方法参数 @Target(ElementType.CONSTRUCTOR) ——构造函数 @Target(ElementType.LOCAL_VARIABLE) ——局部变量 @Target(ElementType.ANNOTATION_TYPE) ——注解 @Target(ElementType.PACKAGE) ——包
@Retention :注解的保留位置
RetentionPolicy.SOURCE :这种类型的 Annotations 只在源代码级别保留,编译时就会被忽略,在 class 字节码文件中不包含。
RetentionPolicy.CLASS :这种类型的 Annotations 编译时被保留,默认的保留策略,在 class 文件中存在,但 JVM 将会忽略,运行时无法获得。
@Document :说明该注解将被包含在 javadoc 中
@Inherited :说明子类可以继承父类中的该注解