springMVC拦截器进行登录验证

来源:互联网 发布:mac 快捷键 编辑:程序博客网 时间:2024/06/08 09:47

使用springMVC的拦截器对没有登录的用户进行拦截


public class LoginInterceptor implements HandlerInterceptor{
//只要url包含regist Regist login Login 这些字母,说明请求的地址是注册或者登录,就不需要拦截了
private static final String[] IGNORE_URI = {"regist","Regist","Login","login"};
@Override
public void afterCompletion(HttpServletRequest request, HttpServletResponse arg1, Object response, Exception arg3)
throws Exception {

}


@Override
public void postHandle(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2, ModelAndView arg3)
throws Exception {
// TODO Auto-generated method stub

}

/**
* 对用户的具体拦截功能
*/
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object arg2) throws Exception {
//标识位
boolean flag = false;
//获取请求地址
String url = request.getRequestURL().toString();
//遍历非校验的常量数组,如果用户的请求地址包含这些数组中的字符串,则将标识位改为true,即不需要拦截
for (String s : IGNORE_URI) {
if(url.contains(s)){
flag = true;
}
}
//如果用户要进入登录或者注册页面,上一个功能将标识位改为true,这里也就不再执行,如果没有,
//则进行判断用户之前是否登录过,登录过则放行,没有登录则拦截
if(!flag){
//从session中获取用户
SysUser user = (SysUser) request.getSession().getAttribute("user");
//判断session中是否有用户
//没有用户,也就是没登录,就将错误信息保存到session中,重定向到登录页面
if(user == null){
request.getSession().setAttribute("msg", "请先登录");

//此处应该为转发

response.sendRedirect("WEB-INF/page/userLogin/login.jsp");
}else{
//有用户,也就是已经登录,将标识位改为true,不再拦截
flag = true;
}
}
return flag;
}


}




springMVC的配置文件

<!-- 拦截器的配置 -->
<mvc:interceptors>
<mvc:interceptor>
<mvc:mapping path="/**"/>
<bean id="loginInterceptor" class="com.iss.interceptor.LoginInterceptor"></bean>
</mvc:interceptor>
</mvc:interceptors>


原创粉丝点击