统一token处理
排除token校验注解类
为不需要校验 token 的方法定义注解
@Documented //标记注解
@Target(ElementType.METHOD) //指定作用在方法上 对方法拦截
@Retention(RetentionPolicy.RUNTIME) //作用域 在运行时有效
NoAuthorization.java
import java.lang.annotation.*;
/**
* 包含该注解的方法 不需要校验token 直接放行
* @author 陌路
* @date 2022-03-19
* @apiNote token统一处理
*/
@Documented//标记注解
@Target(ElementType.METHOD) //指定作用在方法上 对方法拦截
@Retention(RetentionPolicy.RUNTIME) //作用域 在运行时有效
public @interface NoAuthorization {
/** ---------@定义注解---------
* 元注解
* @Target({METHOD,TYPE}) 表示这个注解可以用用在类/接口上,还可以用在方法上
* @Retention(RetentionPolicy.RUNTIME) 表示这是一个运行时注解,即运行起来之后,
* 才获取注解中的相关信息,而不像基本注解如@Override 那种。
* @Inherited 表示这个注解可以被子类继承
* @Documented 表示当执行javadoc的时候,本注解会生成相关文档(标记)
*
* 自定义注解的使用:
* 该注解定义好之后,将该注解加在方法上@NoAuthorization即可,
* 若注解中存在属性需要赋值,则直接可以在注解中赋值即可,
* eg:public @interface ZjObj{
* String name();
* Integer sex();
* }
* eg: @ZjObj(属性="值") -> @ZjObj(name="张三",sex=1)
*
* 也可这样定义注解,效果都是一样的
* @Target(value = { ElementType.ANNOTATION_TYPE })
* @Retention(RetentionPolicy.RUNTIME)
* @Inherited
* @Documented
*
* ---------@解析注解@使用注解---------
* * 若注解中有属性,则可以直接通过反射来获取属性值
* * 相关配置信息本来是以属性的方式存放的,现在改为了以注解的方式
* *
* * @解析注解: 通过反射,获取这个类上的注解对象
* * ZjObj zjObj = class.foraName(ZjObj.class);
* * 拿到注解对象之后,通过方法,获取各个注解元素的值:
* * String name = zjObj.name();
* * Integer sex = zjObj.sex ();
*/
}
本地线程缓存类
封装获取当前登录人数据信息类
在 TokenInterceptor 将获取到的user数据信息