filter制御urlアクセス権限


Projectアプリケーションにはurlが直接アクセスできないものもあります.アクセスするには権限があるか、またはいくつかの処理を経てアクセスする必要があります.たとえば、いくつかの機能にアクセスするにはログインする必要があります.いくつかの機能は指定されたユーザーでなければアクセスできません.これらはアクセス権限の制御に使用する必要があります.アクセス権限がある場合は、アクセスを許可します.権限がない場合は、指定した処理ページにジャンプします.
package com.bird.filter;

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;

/**
 * @author jzq
 *  URL     
 *  2009-11-12
 */
public class AccessPurviewFilter extends HttpServlet implements Filter {    
    /**  
     *      URL  
     */  
    private String redirectURl = null;

   /**   doFilter         ServletRequest  。                (  
    *        、cookie HTTP   )     。      ServletResponse,     
    *              。       FilterChain,       servlet JSP 。
    *    --     HTTP  ,        getHeader getCookies  ServletRequest 
    *           ,    request     HttpServletRequest
    */
    public void doFilter(ServletRequest sRequest, ServletResponse sResponse,
            FilterChain filterChain) throws IOException, ServletException {
          HttpServletRequest request = (HttpServletRequest) sRequest;   
         HttpServletResponse response = (HttpServletResponse) sResponse;   
         HttpSession session = request.getSession();   
   
         //            ,              
         if (session.getAttribute("userName") == null) {
             String contextPath  = request.getContextPath();
             String currentPath = request.getRequestURI(); 
             response.sendRedirect(contextPath  + redirectURl);   
         }            
    }
    
    public void init(FilterConfig arg0) throws ServletException {
       redirectURl = "/login.jsp";         
    }     
}
 
web.xmlでフィルタするURLを設定するには、次の手順に従います.
  <filter>
        <filter-name>AccessPurviewFilter</filter-name>
        <filter-class>com.bird.filter.AccessPurviewFilter</filter-class>
  </filter>
  <filter-mapping>
       <filter-name>AccessPurviewFilter</filter-name>
       <url-pattern>/frame/*</url-pattern>
  </filter-mapping>
        
ユーザーが
frame
フォルダの下のページに入ると、プログラムが入ります
AccessPurviewFilter
のdoFilterメソッドで、権限の判断を行います.