package com.cc.sec; import java.io.IOException; import java.util.HashMap; import java.util.Map; import javax.servlet.ServletRequest; import javax.servlet.ServletResponse; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.apache.shiro.web.filter.authc.UserFilter; /** * 仅仅是重载了UserFilter类的redirectToLogin
重定向到登陆界面模块 * * 这里考虑的情况是两种 * 1、当请求是普通的http请求,就是非Ajax请求时 直接使用UserFilter#redirectToLogin() * 2、当请求时Ajax请求时,这才是我想要重构(重载)的重点,响应的是
一个json串 让客户端自己进入到登陆界面 */ public class Ajax2HttpUserFilter extends UserFilter { @Override protected void redirectToLogin(ServletRequest request,ServletResponse servletResponse) throws IOException { HttpServletResponse response = (HttpServletResponse) servletResponse; //判断请求是否是
一个Ajax请求 Boolean isAjaxRe = WebUtils.isAjaxRequest((HttpServletRequest)request); if(!isAjaxRe){ //不是Ajax请求 则直接
重定向到我的登陆地址 super.redirectToLogin(request,response); } else { if(redirectToLogi
njson == null) initRedirectToLogi
njson(); //否则响应
一个json串 让前端自己
跳转到登陆界面 ContextHelp.responseByJson(redirectToLogi
njson,response); } } /** * 响应前端ajax请求,
跳转到登陆界面的json串 */ private String redirectToLogi
njson = null; /** * 同步的初始化redirectToLogi
njson * 内部会再次判断redirectToLogi
njson是否空 */ private synchronized void initRedirectToLogi
njson() { if(redirectToLogi
njson != null) return ; Map<String,Object> redirectToLogin = new HashMap<>(); redirectToLogin.put("toLogin",true); redirectToLogin.put("loginUrl",getLoginUrl()); redirectToLogin.put("status",302); redirectToLogi
njson = JSONUtils.obj2json(redirectToLogin); } }
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。