首先我们在用户登录成功之后把用户对象放入session对象中。
然后我们需要新建一个登录拦截器类,继承HandlerInterceptorAdapter类,并重写preHandle方法。
在PreHandle方法中我们首先判断一下session对象中的用户对象是否为空,如果不为空说明用户已经登录过了则放开当前请求,否则我们又判断了当前请求是否为ajax请求(我们是通过request对象的getHeader从请求头中获取X-Requested-With这个属性的值是否为XMLHttpRequest来判断是不是ajax请求的),如果是ajax请求,则通过resposne对象返回给客户端一个状态码1000,然后在页面的ajax全局设置请求完成回调函数里判断服务器返回的状态码是否为1000,如果为1000则跳转到登录页面。如果不是ajax请求则直接重定向到登录页面。
然后在springMVC的核心配置文件中声明刚才新建的登录拦截器,具体是先写一个mvc:interceptors标签,然后在这个标签中再写一个mvc:interceptor标签
。mvc:interceptor标签中再写一个mvc:mapping(买瓶)标签配置要拦截的url,在这里我们配成了/**即拦截所有的url。在这里我们需要通过mvc:exclude-mapping标签放开登录等不需要被拦截的url。然后再mvc:interceptor标签中写上一个bean标签class属性值为登录拦截器类的全限定名(包名.类名)