@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object object) {
String jwt = request.getHeader("auth");
String payloadKey = "apitest";
Map<String, Object> map = new HashMap<>(8);
HandlerMethod handlerMethod=(HandlerMethod)object;
Class type = handlerMethod.getBeanType();
if (type.isAnnotationPresent(Auth.class)) {
try {
if (jwt == null || jwt.isEmpty() || jwt.isBlank() || !Objects.equals(payloadKey, JwtUtil.parseJWT(jwt).get("info", String.class))) {
map.put("status", ErrorEnum.AUTH_FAILED.getStatus());
map.put("message", ErrorEnum.AUTH_FAILED.getMessage());
returnJson(response, map);
return false;
}
}catch (ExpiredJwtException | SignatureException | MalformedJwtException e){
map.put("status", ErrorEnum.AUTH_FAILED.getStatus());
map.put("message", ErrorEnum.AUTH_FAILED.getMessage());
returnJson(response, map);
return false;
}catch (Exception e){
e.printStackTrace();
}
}
log.info("1");
return true;
}
下面那个 log.info("1")为什么会执行了 3 次呢
1
Kyle18Tang 2018-11-17 17:29:00 +08:00 via Android
debug
|
2
johnniang 2018-11-17 17:30:51 +08:00 via Android
考虑把你的 demo 放到 github 上,这样我们都方便
|
3
sakudie 2018-11-17 17:46:13 +08:00
打个 log 看下 request uri,另外这样写 HandlerMethod handlerMethod=(HandlerMethod)object; 是有问题的
这里不一定就是 HandlerMethod, 加个 if (handler instanceof HandlerMethod) 判断比较好 |
4
Aruforce 2018-11-17 17:49:41 +08:00 via Android
应该不是方法执行了 3 次 而是日志输出了 3 次……
|
5
shayang888 OP @sakudie 我知道问题在哪了 是我的 controller 里调用了异步方法造成的
谢谢你的建议我这就去改 |