1. 使用自定义参数注解获取 token 中User数据

使用背景

在springboot项目开发中需要从token中获取用户信息时通常的方式要经历几个步骤

  1. 拦截器中截获token

  2. TokenUtil工具类解析token中的用户信息

  3. 把解析结果存入到成员变量中

  4. controller中通过TokenUtil工具类提供的静态方法获取用户信息

下面是过程示例代码

/*--------1.拦截器中获取---------*/
String token =request.getHeader("token")

/*--------2.解析---------*/
//如果没过期且有效
if(!TokenUtil.isExpire(token)){
    //解析token把结果存入成员变量
    TokenUtil.decode(token);
}

/*--------3.controller中获取---------*/
User currentUser=TokenUtil.getUser();

看上去也没什么复杂指处,但是如果在每个Controller中都加上一句 User currentUser=TokenUtil.getUser();感觉有些多余(潜意识知道肯定有更简洁的方法能减少这里所写代码)

下面介绍一种使用自定义参数注解的方法简化获取结果

最后预期达到的效果

正文开始

1. 拦截器中的代码(GlobalInterceptor.java)

2. 注解类 (CurrentUser.java)

3. CurrentUser注解实现类(CurrentUserHandlerMethodArgReslover.java)

4. 在SpringBoot启动类中注册 注解的实现类与拦截器(ServerApplication.java)

5. 在Controller中使用

到此就实现了预期的结果,回头看发现虽然多写了不少代码,但是在用的时候还是更加简洁明了,美丽大方(给自己比个❤)

Last updated

Was this helpful?