登录信息是使用jwt保存的,所以我想在拦截器把jwt用户信息解析出来,然后放在header头中,以便后续业务需要用户信息直接可以读取header头信息。但是我设置了header读取不到数据,怎么回事???
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) {
//统一拦截
logger.info("============拦截请求.........==============");
String headerToken = request.getHeader(CoreCommonConstant.H_TOKEN_KEY);
String paramToken = request.getParameter(CoreCommonConstant.H_TOKEN_KEY);
if (StringUtils.isAllBlank(headerToken, paramToken)) {
throw new BizException(GlobalResponseResultEnum.LOSE_AUTH_TOKEN_ERROR.getCode(),GlobalResponseResultEnum.LOSE_AUTH_TOKEN_ERROR.getMessage());
}
String token = StringUtils.isBlank(headerToken) ? paramToken : headerToken;
Claims claims;
try{
claims = CsJwtUtil.parseJwt(token);
}catch (CheckJwtException e){
throw new BizException(e.getCode(),e.getMessage());
}
claims.put("tokenExpire",claims.get("exp"));
request.setAttribute("TEST",1111);// 测试
// request.setAttribute(CoreCommonConstant.USER_INFO,URLEncoder.encode(JSON.toJSONString(claims), "UTF-8"));
System.out.println(request.getHeader("TEST"));//读取数据为 null
return true;
}
setAttribute("TEST",1111)
并不是放到Header
头部。获取应该是:
request.getAttribute("TEST")