WEB系统身份校验

在web系统中,身份校验是常用的方式。登录页面,是为用户提供登录的入口。但是,有的时候,我们使用ajax操作的时候,由于得不到正确的数据信息,而使页面停留不能跳转到登录页面。其实,http协议的请求头可以帮我们轻松解决这个问题。

在JavaEE的规范中,拦截器,是我们对资源请求的一种过滤方式,而对于安全页面的身份校验,我们也采用了这样的方式。通常情况下,我们在拦截器中,获取匿名用户要请求的页面是需要身份校验,那么我们需要跳转到登录页面,提示用户输入用户信息。

但是,由于ajax采用异步加载数据信息,获取的为text、json、xml等格式数据。这个时候,当我从服务器响应到客户端的如果是登录页面。ajax是无法正确解析这个页面信息,于是就会出现如下现象:
1. 在弹出层中加载出登录页面
2. 无法识别json、xml数据(html不是数据信息)

其实,在拦截器中,我们可以通过HttpServletRequest对象,读取Header信息就可以区分,当前请求是ajax还是普通请求。基于jquery的ajax,在请求头中有如下配置:

X-Requested-With:XMLHttpRequest

那么,我们可以通过

request.getHeader("X-Requested-With");

当我们判断是ajax请求的时候,我们响应到客户端的信息就做一下处理。告诉ajax,你需要跳转登录页面。

当然,到现在,我们的工作并没有结束,我们还需要设置一下$.ajaxSetup(),具体配置如下:


$.ajaxSetup({
    timeout: 3000, // 超时时间
    error: function(xhr, status, msg) {
        // 这里可以从xhr中读取,服务器响应回来的数据信息
    }
});

通过ajaxSetup可以在全局设置jquery的ajax属性,避免,每一个ajax单独配置。





發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章