Home - lichangshu/rurl GitHub Wiki
概述
公司有许多的(web)应用,如果每个应用独立的权限控制,将导致重复的开发成本,和分散的用户以及权限管理.开发该系统为了实现多应用权限的统一管理,同时将应用跟用户系统分离,实现用户的统一管理.
该系统是一个基于URL的权限控制系统,程序分为两部分,rurl服务器端和应用客户端(一般为web应用).客户端程序可以拦截用户访问的url,通过rurl系统查询当前登录的用户是否可以访问该url,来进行权限的控制,从而可以实现应用,用户和权限的分离.
该应用 依赖于已有的用户系统 ,用户的接入需要实现一个查询接口(java),这样的设计的目的是实现用户的统一管理,以及用户系统的独立.从而实现应用和权限的分离.
rurl服务器端为普通的 java web应用, 客户端根据应用的不同可以选择不同语言的实现.暂时应用客户端只有 java 版本的实现, python 和 php 版本实现稍后添加! 客户端地址 https://github.com/lichangshu/rurl-cli 其他语言因个人技术限制,暂时没计划.如有感兴趣的可以联系 E-mail: [email protected] .
安装
- 系统需求: JDK 1.5, servlet 2.5(Tomcat 6,以上即可), MYSQL 5(支持 InnoDB).
- 执行 /db/table.sql SQL
- 修改配置文件 class path 下的 /config/config.properties 修改数据库配置
- rurl自己的权限控制也是通过rurl控制的.修改客户端的配置文件 classpath 下的 rconfig.properties.详细见客户配置
系统设计架构
流程:
- 用户需要首先登录,登录后客户端程序会获取到该用户具有的所有权限,然后缓存下来.
- 当用户访问某个配置了rurl客户端程序的应用的时候,该客户端程序会拦截用户请求的URL,根据规则查询该用户是否有该URL的访问权限,以阻止或允许用户访问.
由于服务器压力问题,没有将该权限判断放置到RURL服务器端进行判断,而是放到了没个应用自己进行计算权限.所以权限依赖于客户端程序,服务器只负责用户权限的查询.
如果自己实现客户端程序,可以故意的错用或误用默认的规则,来实现自己需要的权限判断功能.
基本概念
- 员工/用户
用户管理系统中的一个用户,即需要配置权限的的一个用户(一般为员工)
- 组 (用户组,权限组)
不区分用户组和权限组. 一个组表示一些人和这些人具有的权限, 因为用户不在权限系统中维护,所有不提供 类似部门部门的概念. 可以使用一个特定的组来表现部门.
- 应用(web)
该系统是对多个应用进行权限控制,而每个应用必须有一个唯一的 appName (为配置方便 要求为英文 且不可修改).
- 登录组
每个应用一般会有一个特殊的组,只有该组中的用户可以登录该应用,该组称为"登录组",一个用户有权限,前提是用登录权限.如果用户没有登录权限,即使配置其他权限,他任然没有使用该应用的权限.
- 权限
即应用中的一个URL,该URL一般是不带有get请求时的query参数的.是否需要query参数,需要根据应用的需要,配合客户端实现来做判断.