最近写了一个demo,方便大家练习jmeter压测脚本以及接口自动化
其中一个功能是商品管理,需要拦截器鉴权token,如果失败返回false,此时要设置返回的body
拦截器中
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
String jsonBody = new BodyReaderHttpServletRequestWrapper(request).getBodyString(request);
UserReq reqParam = JSONObject.toJavaObject(JSONObject.parseObject(jsonBody), UserReq.class);
// 校验是否具备权限
String token = reqParam.getToken();
if (token==null || token.isEmpty()){
ResultMsg fail = ResultMsg.fail(ResultCode.FAIL_TOKEN_NULL);
preHandleFalseResponseJsonBody(fail, response);
return false;
} else if (redisUtil.exists(token)){
// 续时
redisUtil.expire(token, 600);
return true;
} else {
ResultMsg fail = ResultMsg.fail(ResultCode.FAIL_TOKEN_EXPIRE);
preHandleFalseResponseJsonBody(fail, response);
return false;
}
}
设置返回json内容的方法
private void preHandleFalseResponseJsonBody(ResultMsg resultMsg,HttpServletResponse response) throws Exception {
response.setContentType("application/json; charset=utf-8");
PrintWriter writer = response.getWriter();
String s = JSONObject.toJSONString(resultMsg);
writer.print(s);
writer.close();
response.flushBuffer();
}