`
neil-jh
  • 浏览: 145376 次
  • 性别: 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对登录进行控制,如果想访问某个目录下的文件,必须先登录,如果没有登录会跳转到登录页面。username:fang,password:11

    Filter控制页面的访问权限

    Filter控制页面的访问权限Filter控制页面的访问权限Filter控制页面的访问权限

    filter 实现权限控制

    这是用rbac来实现的,用于对权限的路径的控制

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

    javaweb使用filter实现的访问权限控制示例。详情请看博客:https://blog.csdn.net/yuzhiqiang_1993/article/details/81288912

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

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

    java中使用Filter控制用户登录权限具体实例

    java中使用Filter控制用户登录权限具体实例,需要的朋友可以参考一下

    springboot权限控制系统

    项目基于jdk1.8整合了springboot+mvc+mybatis(通用mapper)+druid+jsp+bootstrap等技术,springboot+Listener(监听器),Filter(过滤器),Interceptor(拦截器),Servlet,springmvc静态资源,文件上传下载,多数据源切换,缓存...

    预防XSS攻击和SQL注入XssFilter

    XSS是一种经常出现在web应用中的计算机安全漏洞,它允许恶意web用户将代码植入到提供给其它用户使用的页面中。比如这些代码包括HTML代码和客户端脚本。攻击者利用XSS漏洞旁路掉访问控制——例如同源策略(same origin...

    javaweb设计中filter粗粒度权限控制代码示例

    主要介绍了javaweb设计中filter粗粒度权限控制代码示例,小编觉得还是挺不错的,需要的朋友可以参考。

    使用Servlet Filter实现系统登录权限

    主要为大家详细介绍了使用Servlet Filter实现系统登录权限,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

    使用SpringBoot+SpringJPA+Swagger+Shiro快速搭建前后端分离的权限管理系统源码,方便二次开发

    根据这个思路我们可以最终使用Spring的拦截器,或者servlet的Filter实现同样的权限管理 快速搭建前后端分离的权限管理系统 提供一套基于SpringBoo+shiro的权限管理思路. 前后端都加以控制,做到按钮/接口级别的权限...

    权限控制的概念及应用

    可以基于 Filter 实现 在数据库中存放 用户、权限、访问 URL 对应关系, 当前用户访问一个 URL 地址,查 询数据库判断用户当前具有权限,是否包含这个 URL,如果包含允许访问,如果不包含 权限不足 !!!

    Fliter访问权限控制.rar

    里面有我的Filter访问控制权限的全部代码,只要新建maven项目,然后导进,就可以用了,因为数据库版本不同,可能需要自行修改一下数据库连接的代码就好了

    java后台权限管理系统源码(spring boot+mvc+mybatis).zip

    java后台权限管理系统源码(spring boot+mvc+mybatis)。 项目是maven,相应的jar包也在压缩包里。项目基于jdk1.8整合了springboot+mvc+mybatis(通用mapper)+druid+jsp+bootstrap等技术,springboot+Listener(监听器)...

    filter过滤器流程及中文乱码解决和客户端IP地址控制

    本教程中以实际例子介绍了过滤器的运行方式,以JSP开发中常见的中文乱码过滤器和限抽客户机IP访问的二个例子,本教程中代码部分转载,都经过本人修改了其中错误,加了详细注释,保证可以正常运行,希望对大家有所帮助

    JavaWeb Servlet中Filter过滤器的详解

     Filter过滤器,对web服务器所有web资源进行过滤,从而实现一些特殊的功能(权限访问控制、过滤敏感词汇、压缩响应信息)。Filter能够对Servlet容器的请求和响应进行检查和修改,其本身不能生成请求request和响应...

    黑天鹅远控--java远程控制软件

    3.控制端添加了权限判断filter命令 4.重新整理了自定义命令 5.版本检测自动下载升级器 6.ZipMyself项目使用了自定义压缩包,可以设置解压文件的编码 7.所有的环境文件都放置在用户目录下,而不是像2.6版本放在C://...

    springboot+权限管理系统 shiro + ssm实现 实现菜单,自用

    权限管理系统 shiro + ssm实现,实现菜单,有学习的可以下载哦!项目基于jdk1.8整合了springboot+mvc+mybatis(通用mapper)+druid+jsp+bootstrap等技术,springboot+Listener(监听器),Filter(过滤器),Interceptor(拦截器)...

    Filter.docx

    1.Filter概述 Filter也称为过滤器,可以实现对资源访问的拦截,如实现权限控制,敏感词汇过滤,压缩响应等 2.Filter原理

Global site tag (gtag.js) - Google Analytics