Chinaunix首页 | 论坛 | 博客
  • 博客访问: 446050
  • 博文数量: 750
  • 博客积分: 40000
  • 博客等级: 大将
  • 技术积分: 4970
  • 用 户 组: 普通用户
  • 注册时间: 2008-09-09 12:36
文章分类

全部博文(750)

文章存档

2011年(1)

2008年(749)

我的朋友
最近访客

分类:

2008-09-09 15:24:38


  1 web.xml里添加filter配置信息。
  
  Authentication
  
  com.nova.colimas.web.filters.AuthenticationFilter
  

  
  onError
  /pages/index.jsp
  

  

  
  Authentication
  /protect/*
  

  定义使用com.nova.colimas.web.filters.AuthenticationFilter类执行过滤Action。
  当验证失败后Forward到/pages/index.jsp
  只有当地址包括/protect/时运行filter类
  
  2 实现com.nova.colimas.web.filters.AuthenticationFilter
  package com.nova.colimas.web.filters;
  import java.io.IOException;
  import javax.servlet.RequestDispatcher;
  import javax.servlet.ServletException;
  import javax.servlet.http.*;
  import javax.servlet.Filter;import javax.servlet.FilterChain;
  import javax.servlet.FilterConfig;
  import com.nova.colimas.web.bean.UserBean;
  import javax.servlet.ServletRequest;
  import javax.servlet.ServletResponse;import org.apache.struts.Globals;
  import org.apache.struts.action.*;
  import com.nova.colimas.web.constants.Constants;
  /**
  * Filter implementation for user authentication。必须实现Filter接口
  * @author tyrone * @version $Id: AuthenticationFilter.java,v 1.0
  */public class AuthenticationFilter implements Filter{
  /**
  * filterConfig will store the reference of FilterConfig
  */  private FilterConfig filterConfig;
  private String onErrorUrl;
  /**
  * store the reference of the FilterConfig.
  * @param config FilterConfig object
  * @throws ServletException
  */  public void init(FilterConfig config) throws ServletException
  {//获得验证失败forward地址
  filterConfig = config;
  onErrorUrl=filterConfig.getInitParameter("onError");
  if (onErrorUrl==null || "".equals(onErrorUrl)){
  onErrorUrl="/pages/index.jsp";
  }
  }
  /**
  * User Authentication is done. If User is authenticated successful then
  * control is transferred to logon URI
  * @param ServletRequest Request
  * @param ServletRequest Response
  * @param FilterChain Filter Chain
  * @throws ServletException,IOException
  */  public void doFilter(ServletRequest request, ServletResponse response, FilterChain next)
  throws IOException, ServletException
  {
  HttpServletRequest httpRequest = (HttpServletRequest)request;
  HttpServletResponse httpResponse=(HttpServletResponse)response;
  // Current session
  HttpSession httpSession = httpRequest.getSession();
  //Session里是否有用户信息。
  if (httpSession.getAttribute(Constants.USER_KEY) == null)
  {
  ActionErrors errors=new ActionErrors();
  errors.add(ActionErrors.GLOBAL_ERROR,
  new ActionError("error authentication"));
  httpRequest.setAttribute(Globals.ERROR_KEY,errors);
  //没有,验证失败forward到/pages/index.jsp
  httpRequest.getRequestDispatcher(onErrorUrl).forward(httpRequest,httpResponse);
  }else//成果过滤Action结束
  next.doFilter(request,response);
  }
  /**
  * destroy() method is called by the servlet container
  */  public void destroy()
  {
  }
  }
  
【责编:admin】

--------------------next---------------------

阅读(251) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~