通过Token进行LoginUser配置全局用户类
前言前言1:众所周知,token的用处很大,今天就分享一篇通过Token实现全局LoginUser用户信息的文章2:首先定义LoginUser类参数如图所示可将一些项目复用性很高的参数定义
前言前言
1: 众所周知,token的用处很大,今天就分享一篇通过Token实现全局LoginUser用户信息的文章
2:首先定义LoginUser类 参数如图所示 可将一些项目复用性很高的参数定义上,以便于不同的接口能复用LoginUser类获取信息数据,避免了重复请求接口,实现资源的优化配比。
3:通过定义拦截器 Resolver 实现重写方法 并结合断言进行Token信息处理
@Autowired
private RedisService redisService;
@Override
public boolean supportsParameter(MethodParameter methodParameter) {
Class<?> clazz = methodParameter.getParameterType();
return clazz == LoginUser.class || clazz == Result.class;
}
@Override
public Object resolveArgument(MethodParameter methodParameter, ModelAndViewContainer modelAndViewContainer,
NativeWebRequest nativeWebRequest, WebDataBinderFactory webDataBinderFactory) {
log.info("argument resolving...");
LoginUser loginUser = null;
HttpServletRequest request = nativeWebRequest.getNativeRequest(HttpServletRequest.class);
String token = request.getHeader("" +
"Authorization");
Asserts.fails(StringUtils.isNotBlank(token), SysError.TOKEN_REQUIRED);
loginUser = (LoginUser) redisService.get(token);
Asserts.fails(Optional.ofNullable(loginUser).isPresent(), SysError.TOKEN_UNVALID);
return loginUser;
}
}
4: 再通过webConfig将自定义拦截配置到系统config内
@Override
public void addArgumentResolvers(List<HandlerMethodArgumentResolver> resolvers) {
resolvers.add(loginUserArgumentResolver);
}
`
5:自此完成全局用户类配置成功
相关文章
发表评论
评论列表
- 这篇文章还没有收到评论,赶紧来抢沙发吧~