云迈博客

您现在的位置是:首页 > 后端开发 > Java > 正文

Java

通过Token进行LoginUser配置全局用户类

凌玄龙2021-03-31Java348
前言前言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:自此完成全局用户类配置成功

发表评论

评论列表

  • 这篇文章还没有收到评论,赶紧来抢沙发吧~