更清楚明白的 使用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;   
    •   
    • import org.apache.log4j.Logger;   
    •   
    • import com.kiral.action.UserAction;   
    • import com.kiral.model.User;   
    •   
    • /*******************************************************************************  
    •  * 在过滤器中实现权限控制类,用来检验用户是否有权限进入当前页面  
    •  *   
    •  * @作者:kiral  
    •  * @日期:2006-6-24  
    •  * @版本: 1.0  
    •  ******************************************************************************/  
    • public class FilterServlet extends HttpServlet implements Filter {   
    •     private static final long serialVersionUID = 5162189625393315379L;   
    •   
    •     private static Logger LOG = Logger.getLogger(FilterServlet.class);   
    •   
    •     /**  
    •      * 配置允许的角色  
    •      */  
    •     private String allowRole = null;   
    •   
    •     /**  
    •      * 重定向的URL  
    •      */  
    •     private String redirectURl = null;   
    •   
    •     public void init(FilterConfig filterConfig) throws ServletException {   
    •         // 得到允许的角色,这个参数是由web.xml里的allowRole所指定   
    •         allowRole = filterConfig.getInitParameter("allowRole");   
    •         // 指定要重定向的页面   
    •         redirectURl = "/locker/index.html";   
    •     }   
    •   
    •     /**  
    •      * 在过滤器中实现权限控制  
    •      */  
    •     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(UserAction.CURRENT_USER) == null) {   
    •             response.sendRedirect(redirectURl);   
    •         }   
    •         // 会话中存在用户,则验证用户是否存在当前页面的权限   
    •         else {   
    •             User user = (User) session.getAttribute(UserAction.CURRENT_USER);   
    •             try {   
    •                 // 如果用户没有当前页的权限,页面重新定向到登陆页面   
    •                 if ("0".equals(allowRole) || user.hasPower(allowRole)) {   
    •                     filterChain.doFilter(sRequest, sResponse);   
    •                 } else {   
    •                     // 过滤器经过过滤后,过滤链继续传递请求和响应   
    •                     response.sendRedirect(redirectURl);   
    •                 }   
    •             } catch (Throwable e) {   
    •                 LOG.error("权限过滤时候出现错误", e);   
    •                 throw new RuntimeException("权限过滤时候出现错误", e);   
    •             }   
    •         }   
    •     }   
    •   
    •     public void destroy() {   
    •     }   
    •   
    • }  

      在web.xml中配置 要过滤的页面和能进入当前页面的角色

      xml 代码   
    •     <filter>  
    •         <filter-name>UserAdminfilter-name>  
    •            
    •         <filter-class>com.emap.web.FilterServletfilter-class>  
    •            
    •         <init-param>  
    •               
    •             <param-name>allowRoleparam-name>  
    •             <param-value>1param-value>  
    •         init-param>  
    •     filter>  
    •     <filter-mapping>  
    •         <filter-name>UserAdminfilter-name>  
    •         <url-pattern>/jsp/security/*url-pattern>  
    •     filter-mapping> 
    •  
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值