這邊系統前端用的是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框。