public Object resolveArgument(MethodParameter parameter, ModelAndViewContainer mavContainer, NativeWebRequest webRequest, WebDataBinderFactory binderFactory) { if (parameter.getParameterAnnotation(TokenToMallUser.class) instanceof TokenToMallUser) { MallUser mallUser = null; String token = webRequest.getHeader("token"); if (null != token && !"".equals(token) && token.length() == Constants.TOKEN_LENGTH) { MallUserToken mallUserToken = newBeeMallUserTokenMapper.selectByToken(token); if (mallUserToken == null || mallUserToken.getExpireTime().getTime() <= System.currentTimeMillis()) { NewBeeMallException.fail(ServiceResultEnum.TOKEN_EXPIRE_ERROR.getResult()); }
时间: 2024-04-17 19:29:04 浏览: 155
这段代码是一个方法,用于解析并获取与TokenToMallUser注解相关联的参数值。
方法的输入参数包括MethodParameter、ModelAndViewContainer、NativeWebRequest和WebDataBinderFactory等。这些参数提供了访问请求相关信息的能力。
方法首先通过getParameterAnnotation(TokenToMallUser.class)方法获取MethodParameter对象上的TokenToMallUser注解。然后使用instanceof操作符判断获取的注解是否为TokenToMallUser类型。
如果注解是TokenToMallUser类型,接下来会执行一系列逻辑来获取并验证token是否有效。具体流程如下:
1. 从webRequest中获取名为"token"的请求头信息。
2. 判断token是否存在且长度为Constants.TOKEN_LENGTH(一个常量)。
3. 如果token有效,通过调用newBeeMallUserTokenMapper.selectByToken(token)方法查询数据库中的MallUserToken对象。
4. 判断查询结果是否为null以及MallUserToken对象的过期时间是否早于当前时间。
5. 如果token无效,会抛出NewBeeMallException异常,并传入ServiceResultEnum.TOKEN_EXPIRE_ERROR作为错误信息。
整个方法的目的是根据参数上的TokenToMallUser注解,通过验证token的有效性,最终获取到一个有效的MallUser对象。这个MallUser对象可以在后续的请求处理中使用。
阅读全文