public class AuthorizedInterceptor implements HandlerInterceptor{
private static final String[] IGNORE_URI={"/loginForm","/login","/404.html"};
@Override
public void afterCompletion(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2, Exception arg3)
throws Exception {
// TODO Auto-generated method stub
//在整个请求完成后执行,主要用于清理资源
}
//在Controller的方法调用之后执行
@Override
public void postHandle(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2, ModelAndView arg3)
throws Exception {
// TODO Auto-generated method stub
}
//在Controller方法调用之前执行,当返回值为false的时候整个请求就结束了
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
// TODO Auto-generated method stub
boolean flag=false;
String servletPath=request.getServletPath();
for(String s:IGNORE_URI){
if(servletPath.contains(s)){
flag=true;
break;
}
}
if(!flag){
User user=(User)request.getSession().getAttribute(HrmConstants.USER_SESSION);
if(user==null){
request.setAttribute("message","请先登录再访问网站!");
request.getRequestDispatcher(HrmConstants.LOGIN).forward(request, response);
return flag;
}else{
flag=true;
}
}
return flag;
}
}
private static final String[] IGNORE_URI={"/loginForm","/login","/404.html"};
@Override
public void afterCompletion(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2, Exception arg3)
throws Exception {
// TODO Auto-generated method stub
//在整个请求完成后执行,主要用于清理资源
}
//在Controller的方法调用之后执行
@Override
public void postHandle(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2, ModelAndView arg3)
throws Exception {
// TODO Auto-generated method stub
}
//在Controller方法调用之前执行,当返回值为false的时候整个请求就结束了
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
// TODO Auto-generated method stub
boolean flag=false;
String servletPath=request.getServletPath();
for(String s:IGNORE_URI){
if(servletPath.contains(s)){
flag=true;
break;
}
}
if(!flag){
User user=(User)request.getSession().getAttribute(HrmConstants.USER_SESSION);
if(user==null){
request.setAttribute("message","请先登录再访问网站!");
request.getRequestDispatcher(HrmConstants.LOGIN).forward(request, response);
return flag;
}else{
flag=true;
}
}
return flag;
}
}
Springmvc配置文件中配置拦截器
<mvc:interceptors>
<mvc:interceptor>
<!-- 拦截所有请求 -->
<mvc:mapping path="/*"/>
<!-- 自定义判断用户权限的拦截类 -->
<bean class="org.fkit.hrm.interceptor.AuthorizedInterceptor"/>
</mvc:interceptor>
</mvc:interceptors>