`
fantasy
  • 浏览: 515516 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

使用Filter控制页面的权限

    博客分类:
  • Java
阅读更多

      众所周知,如果没有对页面进行权限控制,用户只要输入URL就能进入任何页面。

     下面就演示一下最基本的使用Fiter来控制页面的权限。

     1.写一个FILTER,用来判断用户是否有权限进入指定页面。

java 代码
  1. import java.io.IOException;   
  2.   
  3. import javax.servlet.Filter;   
  4. import javax.servlet.FilterChain;   
  5. import javax.servlet.FilterConfig;   
  6. import javax.servlet.ServletException;   
  7. import javax.servlet.ServletRequest;   
  8. import javax.servlet.ServletResponse;   
  9. import javax.servlet.http.HttpServlet;   
  10. import javax.servlet.http.HttpServletRequest;   
  11. import javax.servlet.http.HttpServletResponse;   
  12. import javax.servlet.http.HttpSession;   
  13.   
  14. import org.apache.log4j.Logger;   
  15.   
  16. import com.kiral.action.UserAction;   
  17. import com.kiral.model.User;   
  18.   
  19. /*******************************************************************************  
  20.  * 在过滤器中实现权限控制类,用来检验用户是否有权限进入当前页面  
  21.  *   
  22.  * @作者:kiral  
  23.  * @日期:2006-6-24  
  24.  * @版本: 1.0  
  25.  ******************************************************************************/  
  26. public class FilterServlet extends HttpServlet implements Filter {   
  27.     private static final long serialVersionUID = 5162189625393315379L;   
  28.   
  29.     private static Logger LOG = Logger.getLogger(FilterServlet.class);   
  30.   
  31.     /**  
  32.      * 配置允许的角色  
  33.      */  
  34.     private String allowRole = null;   
  35.   
  36.     /**  
  37.      * 重定向的URL  
  38.      */  
  39.     private String redirectURl = null;   
  40.   
  41.     public void init(FilterConfig filterConfig) throws ServletException {   
  42.         // 得到允许的角色,这个参数是由web.xml里的allowRole所指定   
  43.         allowRole = filterConfig.getInitParameter("allowRole");   
  44.         // 指定要重定向的页面   
  45.         redirectURl = "/locker/index.html";   
  46.     }   
  47.   
  48.     /**  
  49.      * 在过滤器中实现权限控制  
  50.      */  
  51.     public void doFilter(ServletRequest sRequest, ServletResponse sResponse,   
  52.             FilterChain filterChain) throws IOException, ServletException {   
  53.         HttpServletRequest request = (HttpServletRequest) sRequest;   
  54.         HttpServletResponse response = (HttpServletResponse) sResponse;   
  55.         HttpSession session = request.getSession();   
  56.   
  57.         // 如果回话中的用户为空,页面重新定向到登陆页面   
  58.         if (session.getAttribute(UserAction.CURRENT_USER) == null) {   
  59.             response.sendRedirect(redirectURl);   
  60.         }   
  61.         // 会话中存在用户,则验证用户是否存在当前页面的权限   
  62.         else {   
  63.             User user = (User) session.getAttribute(UserAction.CURRENT_USER);   
  64.             try {   
  65.                 // 如果用户没有当前页的权限,页面重新定向到登陆页面   
  66.                 if ("0".equals(allowRole) || user.hasPower(allowRole)) {   
  67.                     filterChain.doFilter(sRequest, sResponse);   
  68.                 } else {   
  69.                     // 过滤器经过过滤后,过滤链继续传递请求和响应   
  70.                     response.sendRedirect(redirectURl);   
  71.                 }   
  72.             } catch (Throwable e) {   
  73.                 LOG.error("权限过滤时候出现错误", e);   
  74.                 throw new RuntimeException("权限过滤时候出现错误", e);   
  75.             }   
  76.         }   
  77.     }   
  78.   
  79.     public void destroy() {   
  80.     }   
  81.   
  82. }  

 

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

xml 代码
  1. <!---->  
  2.     <filter>  
  3.         <filter-name>UserAdminfilter-name>  
  4.         <!---->  
  5.         <filter-class>com.emap.web.FilterServletfilter-class>  
  6.         <!---->  
  7.         <init-param>  
  8.             <!---->  
  9.             <param-name>allowRoleparam-name>  
  10.             <param-value>1param-value>  
  11.         init-param>  
  12.     filter>  
  13.     <filter-mapping>  
  14.         <filter-name>UserAdminfilter-name>  
  15.         <url-pattern>/jsp/security/*url-pattern>  
  16.     filter-mapping>  

上面配置的意思是说,当用户进入/jsp/security文件夹下的页面的时候,程序会进入FilterServlet 里的doFilter方法里,进行权限判断。

 其他的页面权限控制:

  1.你可以在filter里判断用户是否登录,然后需要特殊权限能访问的页面,在页面里进行判断。

  2.推荐使用开源框架ACEGI来进行权限控制。

 

分享到:
评论
1 楼 leeking 2007-07-23  
难道你的 当前用户是固定的吗?你写成了 UserAction.CURRENT_USER这种形式.

相关推荐

    Filter控制页面的访问权限

    【Filter控制页面的访问权限】是指在Web应用中,通过Filter(过滤器)技术来实现对用户访问特定页面的权限管理。Filter是Java Servlet API的一部分,它可以拦截HTTP请求,在请求到达目标Servlet或JSP之前进行预处理...

    filter 实现权限控制

    在"使用Filter控制页面的权限"的实践中,我们可以按照以下步骤来实现: 1. **创建Filter**: 首先,我们需要创建一个自定义的`Filter`类,该类需要实现`javax.servlet.Filter`接口,并重写`doFilter()`方法。在这个...

    Filter进行权限控制

    在这个场景中,"Filter进行权限控制"指的是使用`Filter`来实现用户访问权限的管理,确保只有登录后的用户才能访问特定的资源。下面我们将深入探讨`Filter`的工作原理以及如何实现登录控制。 `Filter`是Java Servlet...

    SpringBoot 权限控制(菜单控制,页面元素控制,url控制)

    本篇文章将详细探讨如何在SpringBoot中实现基于RBAC(Role-Based Access Control,基于角色的访问控制)的权限控制,包括菜单控制、页面元素控制以及URL控制。 首先,让我们理解RBAC模型。RBAC是一种权限分配策略,...

    JSP权限管理系统filter

    解压后,你可以查看源码,学习如何实现一个具体的JSP权限管理系统,包括Filter的使用、用户验证和权限控制等。 总的来说,JSP权限管理系统filter是一种有效的安全措施,它通过拦截和处理请求,确保了Web应用的安全...

    javaweb实现的访问权限控制示例

    通过上述讲解,你应该对如何在Java Web中使用Filter实现访问权限控制有了基本的理解。在深入研究这个示例的博客文章(https://blog.csdn.net/yuzhiqiang_1993/article/details/81288912)后,你可以了解到更多具体...

    Java Filter 限制用户浏览权限

    本话题主要关注如何使用Java Filter来限制用户的浏览权限,确保只有经过身份验证和授权的用户才能访问特定的资源。这在构建安全的Web应用程序时至关重要。 首先,我们需要了解Java Filter的基本概念。Filter是...

    利用Filter限制用户浏览权限

    本话题将详细探讨如何利用Filter来限制用户浏览特定的页面,以实现用户权限控制。 一、Filter概述 Filter是Servlet规范的一部分,它允许开发者在请求到达目标资源(如Servlet或JSP)之前和之后对请求和响应进行拦截...

    filter 过滤用户权限

    本篇将详细探讨`filter`如何用于过滤非登录用户的权限控制,以及相关的源码实例。 一、Filter基本概念 在Java Servlet规范中,Filter是一个接口,它允许开发者在请求到达Servlet之前对其进行拦截和处理,也可以在...

    使用Filter实现登录权限验证

    总的来说,使用Filter进行登录权限验证是一种常见的做法,它允许我们在不修改具体业务逻辑的情况下,统一地控制用户访问权限。这种方式提高了代码的可维护性和复用性。在实际应用中,我们还可以根据需求对Filter进行...

    filter过滤器实现权限访问控制以及同一账号只能登录一台设备

    在这个场景中,我们将探讨如何使用`Filter`来实现权限访问控制,以及确保同一账号只能在一台设备上登录。 **一、Filter过滤器基础** 1. **定义与工作原理**:`Filter`是Servlet规范的一部分,它在请求到达目标...

    java权限控制

    Spring Security是Java Web开发中广泛使用的安全库,它提供了强大的权限控制功能。通过配置或注解,可以轻松地实现过滤器链,进行身份验证和授权。 6. **Filter的配置**: 在`web.xml`中,我们需要定义过滤器并...

    shiro-freemarker权限控制标签

    在实际应用中,你可以根据用户角色分配不同的权限,然后在模板中使用Shiro标签进行控制。例如,只有管理员角色的用户才能看到“删除用户”按钮: ```html ('delete:user')}&gt; ()"&gt;删除用户 ``` **注意事项** 1. ...

    过滤器实现多层权限控制

    过滤器(Filter)技术常被用来实现多层权限控制,确保只有合法的用户才能访问特定的资源。本文将深入探讨如何利用过滤器实现多层权限控制,并结合给定的标签“源码”和“工具”,来提供一个具体的实践示例。 首先,...

    jsp+servlet+filter+javabean 权限实例代码

    在本文中,我们将深入探讨如何使用JSP、Servlet、Filter和JavaBean来实现一个权限管理的实例。这些技术是构建动态Web应用的核心组件,尤其是在处理用户登录和权限控制时。 首先,`JSP (JavaServer Pages)`是一种...

    shiro动态URL权限控制

    例如,一个只允许管理员访问的页面,可以在控制器方法上添加`@RequiresRoles("admin")`注解。 通过以上步骤,你就可以在Spring中成功集成Shiro并实现动态URL权限控制了。这不仅提高了代码的可维护性,还使得权限...

    使用filter拦截servlet和jsp页面的内容,进行过滤后输出

    本文将详细介绍如何使用filter来对servlet和jsp页面的内容进行过滤,并在过滤后输出。 首先,了解Servlet Filter的基本概念。Filter是Java Servlet API的一部分,它允许开发者在请求到达目标Servlet或JSP之前以及...

    java 中如何使用filter过滤器

    - **权限控制**:如上面示例所示,检查用户是否已登录,限制未授权访问。 - **字符编码转换**:统一处理请求和响应的编码问题。 - **日志记录**:记录请求信息,便于调试和分析。 - **缓存处理**:对静态资源进行...

    spring security权限控制

    在本文中,我们将深入探讨Spring Security如何实现权限控制,并通过一个名为"springsecuritydemo4"的示例项目来理解其核心概念。 首先,Spring Security 的权限控制主要涉及以下几个关键组件: 1. **认证...

    Java SpringBoot实现的过滤器(和拦截器)控制登录页面跳转

    本项目主要关注的是如何使用过滤器(Filter)和拦截器(Interceptor)来实现登录页面的控制与跳转。以下是对这些知识点的详细说明: 1. **SpringBoot**: SpringBoot是Spring框架的一个子项目,旨在简化Spring应用...

Global site tag (gtag.js) - Google Analytics