用过滤器来限制登录权限

用过滤器来限制登录权限

 

package  com.accp.epet.common;

import  java.io.IOException;

import  javax.servlet.Filter;
import  javax.servlet.FilterChain;
import  javax.servlet.FilterConfig;
import  javax.servlet.ServletException;
import  javax.servlet.ServletRequest;
import  javax.servlet.ServletResponse;
import  javax.servlet.http.HttpServlet;
import  javax.servlet.http.HttpServletRequest;
import  javax.servlet.http.HttpServletResponse;
import  javax.servlet.http.HttpSession;

public   class  LoginFilter  extends  HttpServlet  implements  Filter {

  
private   final   static  String[] exact_url  =  {  " index.jsp " " styles.css " ,
      
" /images "  , " login.do "  };  //  不用做权限判断的URL

  
public   void  doFilter(ServletRequest request, ServletResponse response,
      FilterChain chain) 
throws  IOException, ServletException {
    HttpServletRequest req 
=  (HttpServletRequest) request;
    HttpServletResponse res 
=  (HttpServletResponse) response;
    HttpSession session 
=  req.getSession( false );
    
boolean  needFilt  =   false ; // 是否需要过滤
    String uri = req.getRequestURI();
    
    
// .jsp和.do的uri需要过滤
     if  (req.getRequestURI().indexOf( " .jsp " >=   0
        
||  req.getRequestURI().indexOf( " .do " >=   0 )
      needFilt 
=   true ;
    
    
// 不用做权限判断的URL不需要过滤
     for  ( int  i  =   0 ; i  <  exact_url.length; i ++ ) {
      
if  (req.getRequestURI().indexOf(exact_url[i])  >=   0 ) {
        needFilt 
=   false ;
        
break ;
      }
    }
    
if  (needFilt  &&  req.getSession().getAttribute( " login " ==   null ) { 
 res.sendRedirect(req.getContextPath() 
+   " /index.jsp " ); 
 
return
 } 
 chain.doFilter(req, res);
  }

  
public   void  init(FilterConfig arg0)  throws  ServletException {

  }

}

你可能感兴趣的:(用过滤器来限制登录权限)