java登录拦截器

来源:互联网 发布:python图形化界面开发 编辑:程序博客网 时间:2024/06/12 22:33

为了防止用户在没有登录的情况下来访问我们的网站,保证网站的安全性,我们要对登录进行拦截。

废话不多,直接上代码!

public classCxbPartnerInterceptorextendsHandlerInterceptorAdapter {

    @Autowired
    protectedUserSessionuserSession;

    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)throwsException {

//获取请求的url
        String url = request.getRequestURI();

//判断当前请求的页面是否为登录页面,是则不用处理;
        if(url.indexOf("chuang/login") >=0||url.indexOf("partner/login") >=0){
            return true;
        }

//ajax请求,获取到的用户登录信息如果过期或者不存在,则返回一个错误,然后在前台进行处理
        if(request.getHeader("X-Requested-With") !=null){
            
if(userSession.getUserIdFromCookie(request) !=null){
                return true;
            }
            response.setStatus(SC_UNAUTHORIZED);
            return false;
        }else {//当前不是ajax请求,获取到的用户登录信息如果过期或者不存在,则直接跳转到登录页面从新登录
            if(userSession.getUserIdFromCookie(request) !=null){
                return true;
            }
            response.sendRedirect(Helper.getcxbUrl("chuang/login"));
            return false;
        }


    }
}


//前台处理的代码

exports.ajaxSubmit=function(form,callback){
    var _data= form.serialize();
    $.ajax({
        url:form.attr('action'),
        type:"post",
        data:_data,
        dataType:'json'
    
}).done(function(data){
        exports.ajaxAction({data:data});
        callback&& callback();
    }).fail(function(xhr,status,errorThrown) {
        if (errorThrown =="Unauthorized") {
            if (window.top==window) {
                
window.top.location.href="你要跳转的url";
            } else {
                window.location.href= "你要跳转的url";
            }
        }

    });
}


//配置文件的配置

<!--配置拦截器,多个拦截器,顺序执行-->
<mvc:interceptors>
    <mvc:interceptor>
        <!-- 匹配的是url路径,如果不配置或/**,将拦截所有的Controller -->
        
<mvc:mappingpath="/chuang/**"/>
        <mvc:mappingpath="/cxb/**"/>
        <beanclass="com.aaa.cxb.controller.CxbPartnerInterceptor"></bean>
    </mvc:interceptor>
    <!-- 当设置多个拦截器时,先按顺序调用preHandle方法,然后逆序调用每个拦截器的postHandleafterCompletion方法-->
</mvc:interceptors>

注:401 (SC_UNAUTHORIZED)表示客户端在授权头信息中没有有效的身份信息时访问受到密码保护的页面。这个响应必须包含一个WWW-Authenticate的授权信息头。


原创粉丝点击