Ajax 实现session过期后退出到登录页面

登录拦截器类:

public class UserLoginInterceptor extends HandlerInterceptorAdapter
{
    private static Logger logger = LoggerFactory.getLogger(UserLoginInterceptor.class);
    private static final String[] IGNORE_URI = { "/login", "/home", "/browsers", "/auth", "/loginPost", "/getTotalApi",
            "/getData" };

    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception
    {

        String applicationName = "/"
                + request.getContextPath().split("/")[request.getContextPath().split("/").length - 1] + "/";
        String resPrefix = "/assets/";
        String imgPrefix = "/images/";
        String requestUrl = request.getRequestURL().toString();
        String requestUri = request.getRequestURI().toString();
        String requestServletPath = request.getServletPath().toString();
        if (requestUrl.endsWith(applicationName) || requestServletPath.startsWith(resPrefix)
                || requestServletPath.startsWith(imgPrefix))
        {
            return true;
        }
        boolean flag = false;
        String url = request.getRequestURL().toString();
        for (String s : IGNORE_URI)
        {
            if (url.contains(s))
            {
                flag = true;
                break;
            }
        }
        if (!flag)
        {
            String token = SessionUtil.getToken();
            if (StringUtils.isNotEmpty(token) && token != "401")
            {
                flag = true;
            }
            else
            {
                logger.error("token is invalidate :" + request.getRemoteHost() + "  url  :" + request.getContextPath());
                response.setHeader("sessionstatus", "timeout");
                flag = false;
            }
        }
        return flag;
    }
}
前端页面使用全局的Ajax访问,来处理Ajax请求时session过期

//全局的ajax访问,处理ajax清求时sesion超时 
        $.ajaxSetup({
            contentType: 'application/x-www-form-urlencoded;charset=utf-8',
            complete: function(xhr, status) {
                var sessionStatus = xhr.getResponseHeader('sessionstatus'); // 通过XMLHttpRequest取得响应头,sessionstatus,
                if (sessionStatus == "timeout") {
                    // 如果超时就处理 ,指定要跳转的页面
                    location.href = 'login';
                }
            }
        });



  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值