| 
         
     
     | 
     | 
    
  
    | 
    [原创]过滤器的应用 | 
   
  
     | 
   
  
     | 
   
  
    | 
     作者:未知  来源:月光软件站  加入时间:2005-2-28 月光软件站  | 
   
  
    [原创]过滤器的应用
  
/**  * @(#) UserAuthenticateFilter.java  *  * Copyright 2004 Opensource Develop Team. All rights reserved.  */
  // package package com.opensource.filter;
  // imports import sun.misc.BASE64Decoder;
  import javax.servlet.*; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; import java.io.IOException; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException;
  import com.opensource.database.ConnectFactory;
 
  /**  * 进行用户身份验证,通过和数据库相连取得用户信息。  *  * @author: ODT  * @see: Filter  * @version: 1.0 21/04/2004  * @since: 1.3  */ public class UserAuthenticateFilter implements Filter {      private FilterConfig filterConfig = null;     private String adhocPassword = null;
      public void doFilter(ServletRequest request, ServletResponse response,                          FilterChain chain)         throws IOException, ServletException     {         if (filterConfig == null)             return;
          HttpServletRequest myReq = (HttpServletRequest) request;         HttpServletResponse myResp = (HttpServletResponse) response;         HttpSession session = myReq.getSession();
 
          String authString = myReq.getHeader("Authorization");
          if (authString == null)         {          // 修改realm             myResp.addHeader("WWW-Authenticate", "BASIC realm=\"OpenSource\"");             myResp.setStatus(HttpServletResponse.SC_UNAUTHORIZED);             return;         }         else         {             // atuhenticate             BASE64Decoder decoder = new BASE64Decoder();             String enString = authString.substring(6);             String decString = new String(decoder.decodeBuffer(enString));             int idx = decString.indexOf(":");             String uid = decString.substring(0, idx);             String pwd = decString.substring(idx+1);
              if (!externalAuthenticate(uid, pwd))             {            // 修改realm            myResp.addHeader("WWW-Authenticate", "BASIC realm=\"OpenSource\"");                 myResp.setStatus(HttpServletResponse.SC_UNAUTHORIZED);                 return;             }
              session.setAttribute("username", uid);             session.setAttribute("password", pwd);         }
          filterConfig.getServletContext().log("in AdHocAuthenticateFilter");         chain.doFilter(request, response);         filterConfig.getServletContext().log("Getting out of AdHocAuthenticateFilter");     }           /**      * 数据库查询可自己修改      * @param: user -- 用户名      * @param: password -- 密码      * @return: boolean      */     private boolean externalAuthenticate(String user, String password)     {          Connection myConnection = new ConnectFactory().getConnection();
          try         {             String confirmSql =                     "SELECT USERNAME, PASSWORD FROM USERS WHERE " +                      "USERNAME=? AND PASSWORD=?";             PreparedStatement prep = myConnection.prepareStatement(confirmSql);             prep.setString(1, user);             prep.setString(2, password);             ResultSet rs = prep.executeQuery();             if (rs.next())             {                  myConnection.close();                 return true;             }         }         catch (SQLException sqle)         {             return false;         }
           return false;     }
      public void destroy(){}
      public void init(FilterConfig filterConfig)     {         if (adhocPassword == null)             adhocPassword = "aaaa";            this.filterConfig = filterConfig;     }
      public String toString()     {         if (filterConfig == null)             return ("AdHocAuthenticateFilter()");
          StringBuffer sb = new StringBuffer("AdHocAuthenticateFilter(");         sb.append(filterConfig);         sb.append(")");         return (sb.toString());     } }
  安装配置UserAuthenticateFilter web.xml
  <filter>      <filter-name>User Authenticate</filter-name>      <filter-class>com.opensource.filter.UserAuthenticateFilter</filter-class>      <init-param>            <param-name>adhocPassword</param-name>            <!-- 可以初始化其他值 -->            <param-value>************</param-value>       </init-param> </filter>
  <filter-mapping>      <filter-name>User Authenticate</filter-name>      <!-- 访问/opensource/下的任何文件都需要输入密码 -->      <url-pattern>/opensource/*</url-pattern> </filter-mapping> |    |    
 
  | 
   
  
     | 
   
  
     相关文章:相关软件:  | 
   
   
      |