/**
* 表示访问拒绝时是否自己处理,如果返回true表示自己不处理且继续拦截器链执行,返回false表示自己已经处理了(比如重定向到另一个页面)
* @param request
* @param response
* @return
* @throws Exception
*/
@Override
protected boolean onAccessDenied(ServletRequest request, ServletResponse response) throws Exception {
if (this.isLoginRequest(request, response)) {
if (this.isLoginSubmission(request, response)) {
return this.executeLogin(request, response);
} else {
return true;
}
} else {
if(AjaxUtil.isAjaxRequest(request)){
response.setContentType("application/json;charset=UTF-8");
response.getWriter().print("你咩有登录,跳转到登录页面");
}else{
this.saveRequestAndRedirectToLogin(request, response);
}
return false;
}
}
请先阅读点击打开链接
在自己实现的form登录过滤器里加上ajax提交验证,如果是ajax验证则返回json数据即可
在父类FormAuthenticationFilter 里onAccessDenied该方法是直接调用saveRequestAndRedirectToLogin
我这里做了ajax验证判断,这是登录过滤器,所以我直接返回没有登录信息,如果有其他过滤器 同理即可
网友评论