对于同步请求,在用户没有权限时,shiro会把用户重定向到指定页面,但是ajax请求,这个就不好用了,ajax请求每次获取的可能是页面,也可能是数据。
针对这种情况,做了以下处理:
if (httpRequest.getHeader("X-Requested-With") == null || !httpRequest.getHeader("X-Requested-With").equals("XMLHttpRequest")) {
if(StringUtils.hasText(unauthorizedUrl)) {
WebUtils.issueRedirect(request, response, unauthorizedUrl);
} else {
WebUtils.toHttp(response).sendError(401);
}
}else {
WebUtils.toHttp(response).sendError(401,"没有权限");
}
先判断是不是ajax请求,如果是,则发送错误消息。
在页面端也要做以下处理:
error:function (jqXHR) {
alert(eval("("+jqXHR.responseText+")").message);
}
获取到服务端返回的错误消息,并展示给用户。
本文介绍了如何在使用Shiro进行权限控制时处理Ajax请求。当用户没有访问权限时,Shiro通常会重定向到特定页面,但对于Ajax请求,需要特殊处理。文中详细解释了如何判断请求是否为Ajax,并发送相应的错误消息。
664

被折叠的 条评论
为什么被折叠?



