`
neil-jh
  • 浏览: 147800 次
  • 性别: Icon_minigender_1
  • 来自: 上海
文章分类
社区版块
存档分类
最新评论

使用Filter控制权限

阅读更多

目前很多项目对权限的控制一般普遍使用Acgi来控制权限。这里对老技术做一个回顾,曾经使用过Filter来控制权限,如果对Filter不是很熟悉的朋友,可以简单看下,也许多少会有些帮助。

public class PopedomFilter implements Filter {
    public void init(FilterConfig filterConfig) throws ServletException {

    }

    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
        HttpServletRequest httpServletRequest = (HttpServletRequest) servletRequest;
        HttpServletResponse httpServletResponse = (HttpServletResponse) servletResponse;

        String contextPath = httpServletRequest.getContextPath();   //取得项目当前根目录   例如:/project
        String currentPath = httpServletRequest.getRequestURI();    //取得当前要访问的页面目录   /project/admin/xxx.action

        if (!checkUserPopedom(httpServletRequest, httpServletResponse, contextPath, currentPath)) {     //检查当前访问的路径是否包含在此用户的权限列表中,如果不存在return出去,不进行下一步的调用
            return;
        }

        filterChain.doFilter(servletRequest, servletResponse);

    }

    private boolean checkUserPopedom(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, String contextPath, String currentPath) throws IOException {
        User user = (User) httpServletRequest.getSession(true).getAttribute("user");

        if (user == null) {
            httpServletResponse.sendRedirect(contextPath + "/");
            return false;
        } else {
            if (!checkPopedom(user, contextPath, currentPath)) {
                httpServletResponse.sendRedirect(contextPath + "/");
                return false;
            }
        }

        return true;
    }

    private boolean checkPopedom(User user, String contextPath, String currentPath) {
        if (user.getSystemResourceList() != null) {
            for (SystemResource resource : user.getSystemResourceList()) {
                String url = contextPath + resource.getActionUrl().trim();
                if (url.equals(currentPath)) {
                    return true;
                }
            }
        }
        return false;
    }

    public void destroy() {
    }
}

 

在web.xml 中需要对这个Filter进行配置如下

<filter>
     <filter-name>PopedomFilter </filter-name>
     <filter-class>...filter.RightFilter</filter-class>
 </filter>

<filter-mapping>
     <filter-name>PopedomFilter </filter-name>
     <url-pattern>*.action</url-pattern>

 </filter-mapping>

 

1
5
分享到:
评论

相关推荐

    Filter进行权限控制

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

    filter 实现权限控制

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

    Filter控制页面的访问权限

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

    JSP权限管理系统filter

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

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

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

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

    除了手动配置,还可以使用代码生成工具,如MyBatis的Generator,自动生成CRUD操作及对应的权限控制代码。这种方式可以节省大量手动编写代码的时间,但可能需要对生成的代码进行调整以适应RBAC需求。 在实际开发中,...

    Java Filter 限制用户浏览权限

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

    java写的一个权限控制的插件

    4. **过滤器与拦截器**:为了实现权限控制,插件可能利用了Servlet Filter或者Spring MVC的Interceptor机制,对请求进行预处理,判断用户是否有权限执行当前操作。 5. **动态权限分配**:在某些情况下,权限可能...

    springboot springsecurity动态权限控制

    - 动态权限加载:在每个请求之前,根据用户角色加载相应的权限,可以使用`PreAuthorize`或`PostAuthorize`注解进行控制。 4. **自定义Filter**: - 如果默认的过滤器不能满足需求,可以编写自定义过滤器,插入到...

    java后台权限控制

    本教程将深入探讨这两种不同的权限控制实现方式:一种不使用Shiro,另一种则是结合Shiro进行权限管理。 1. **不使用Shiro的权限控制**: 在不依赖Shiro的情况下,Java后台权限控制通常需要自定义实现。这通常涉及到...

    filter 过滤用户权限

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

    使用Filter实现登录权限验证

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

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

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

    shiro-freemarker权限控制标签

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

    过滤器实现多层权限控制

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

    利用Filter限制用户浏览权限

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

    shiro动态URL权限控制

    本教程将深入探讨如何在Spring环境中集成Shiro,并利用其动态URL权限控制功能来保护Web应用的安全。 在Spring中整合Shiro,首先需要在项目中引入Shiro的依赖库。这通常通过Maven或Gradle的配置来完成,确保项目可以...

    java权限控制

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

    用 Filter 作为控制器的 MVC

    - 控制流更灵活:Filter可以在请求进入Struts2之前处理特定逻辑,如权限验证。 - 重用性:Filter可以应用于多个Action,提供通用的服务。 总的来说,Struts2中通过Filter实现的MVC模式让开发者能更好地控制请求的...

    java 中如何使用filter过滤器

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

Global site tag (gtag.js) - Google Analytics