layui+Spring拦截器,拦截ajax请求
这边系统前端用的是layui,后端是Spring Boot。现在需要对前台发出的ajax请求通过Spring的拦截器验证权限。如果有权限就放过,无权限则退回。
解决如下:
拦截器PreHandler进行权限验证,通过返回true,让请求继续执行,如果不通过则
PrintWriter writer = null;
res.setCharacterEncoding("UTF-8");
res.setContentType("application/json; charset=utf-8");
try {
writer = res.getWriter();
JSONObject obj = JSONObject.fromObject(ResponseData.genResponseDataAuthFail("无权限!"));
writer.print(obj);
} catch (IOException e) {
logger.error("response error",e);
} finally {
if (writer != null){
writer.close();
}
}
采用PrintWriter的writer方法,因为ajax无法请求下一步,自然不可能有返回值。在拦截器里把返回值拼装好用write.print回去,前端就能接到了。
js里的方法:
dataManageService.getDataList(requestData).success(function (data) {
if (!data.success) {
if (data.code == 2) {
console.log("未授权");
}
layer.open({title: data.msg, content: data.data});
layer.close(layerIndex);
return;
}
.....
前端接到json后解析json,并弹框报错,这个【layer.close(layerIndex);】语句是前面有一个
var layerIndex = layer.load(1, {shade: [0.5, '#393D49']});
这是个loading框,这句话是去掉这个loading框。