后端报错
错误的返回值
过滤器代码:
@Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
HttpServletRequest request = (HttpServletRequest) servletRequest;
HttpServletResponse response = (HttpServletResponse) servletResponse;
//设置编码
request.setCharacterEncoding("UTF-8");
//设置响应编码
response.setContentType("text/html;charset=UTF-8");
//去请求头中获取token
String token = request.getHeader("token");
System.out.println("token====" + token);
//如果token不为空 且在redis中存在key为token的值
if (token != null && RedisUtils.isKey(token)) {
System.out.println("adminToken====" + token);
//获取登陆的用户
userVO = RedisUtils.getUser(token);
if (userVO.getRole() > 0) {
//放行
filterChain.doFilter(request, response);
//修改字符长度
response.setContentLength(response.getBufferSize());
}
}
//返回提示信息
response.getWriter().println(JsonUtils.objectToJson(new Result().result403("管理员可用", "/admin")));
}
解决:
将返回提示信息放入else语句中执行
//如果token不为空 且在redis中存在key为token的值
if (token != null && RedisUtils.isKey(token)) {
System.out.println("adminToken====" + token);
//获取登陆的用户
userVO = RedisUtils.getUser(token);
if (userVO.getRole() > 0) {
//放行
filterChain.doFilter(request, response);
//修改字符长度
response.setContentLength(response.getBufferSize());
}
}else {
response.getWriter().println(JsonUtils.objectToJson(new Result().result403("管理员可用", "/admin")));
}