# request-url-filter **Repository Path**: secondriver/request-url-filter ## Basic Information - **Project Name**: request-url-filter - **Description**: request-url-filter:是使用Java和Groovy混合编程的一个对JavaWeb应用中的请求进行权限控制的项目,通过配置基于URL粒度访问控制的数据库表,即可实现Web应用的访问控制。 - **Primary Language**: Groovy - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2014-09-24 - **Last Updated**: 2021-11-02 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README ##request-url-filter## 是使用Java和Groovy混合编程的一个对JavaWeb应用中的请求进行权限控制的项目,通过配置基于URL粒度访问控制的数据库表,即可实现Web应用的访问控制。 1.模块划分 + 过滤器模块`com.secondriver.url.filter` + URL匹配处理模块`com.secondriver.url.filter.match` + URL配置数据表访问模块`com.secondriver.url.filter.urlrealm` + 数据表结构安装模块`com.secondriver.url.admin` 2.默认实现 + 过滤器模块 `com.secondriver.url.filter.AccessURLFilter`类是核心请求URL的过滤器实现类。 + URL匹配处理模块 `com.secondriver.url.URLPatternMatch`接口是URL匹配处理实现的接口。提供了三中具体的实现: Ant风格实现:`com.secondriver.url.filter.match.groovy.AntURLPatternMatch` > 参见:Spring的[`org.springframework.util.AntPathMatcher`](http://docs.spring.io/spring/docs/3.2.11.RELEASE/javadoc-api/org/springframework/util/AntPathMatcher.html "Spring的AntPathMatcher") Simple风格实现:`com.secondriver.url.filter.match.groovy.SimpleURLPatternMatch` > 参见:Spring的[`org.springframework.util.PatternMatchUtils`](http://docs.spring.io/spring/docs/3.2.11.RELEASE/javadoc-api/org/springframework/util/PatternMatchUtils.html "Spring的PatternMatchUtils") Default风格实现:`com.secondriver.url.filter.match.groovy.DefaultURLPatternMatch` 默认实现以请求URL的Path和URL配置的数据表进行严格的匹配,以实现URL的访问控制。 + URL配置数据表访问模块 `com.secondriver.url.filter.urlrealm.URLRealm`接口是URL配置数据表的接口。提供了默认实现:`com.secondriver.url.filter.urlrealm.URLRealm.DefaultURLRealm` + URL配置数据表 项目提供了`postgres`,`mysql`,`sqlserver`的数据表结构,其作为资源文件位于`com.secondriver.url.filter.sqlscript.properties`. + 数据表结构安装模块 项目源代码目录`admin` 下放置了具体安装URL配置数据表结构的实现脚本和Servlet结构,`test`目录下`com.secondriver.url.filter.TestInstallScript`是其使用的示例。 3.代码组织结构 + `src` 项目的核心代码目录 + `test` 项目代码测试用例或者使用示例 + `admin` 项目中安装URL配置数据表的程序实现 4.写在最后 初学[`Groovy`](http://groovy.codehaus.org/ "Groovy官网"),体验其Java的一面和非Java的一面,不免欣喜。 该项目通过`Java`和`Groovy`混合编码的方式实现Web请求的访问控制,其基本原理是:通过在数据库表中配置`URL`和用户的关联,当指定用户访问关联的`URL`则表示已授权,否则表示未授权。同时为了遵循实际需要,可以在数据库表中配置公共的`URL`,此类`URL`属于开放请求,即任何人都可以访问。为了便于配置`URL`和用户的关联,项目中采用了`URL`,`URL组`,`用户`三者相互授权的方式进行管理,即一个用户可以拥有一个或者多个`URL`组的授权,一个`URL`组可以拥有一个或者多个`URL`的授权的方式。 实现项目中使用,本项目可以在小型`Java web`应用中的基于`URL`访问控制场景下使用。依赖到[`groovy`的库](http://groovy.codehaus.org/Download "Groovy的库")。 我的博客:[http://aiilive.blog.51cto.com](http://aiilive.blog.51cto.com "野马红尘")