一、概述
以前写过一篇关于B/S权限管理的文章,参考(http://blog.chinaunix.net/u1/52224/showart_415123.html),那篇文章和演示系统主要是针对大型企业应用的SSO解决方案,实际B/S开发中除了大型应用,也有很多中小型应用,不需要大型企业应用那样高度模块化,一般需要高度集成而且能快速实施,所以这次再次发布一个权限管理的演示系统,相对上一个系统,这个显得比较“轻巧”,这个系统把用户管理和权限验证结合到一起,使用单一的数据库管理这些数据,同时这个示例也可以作为一般中小型B/S应用的起点,业务模块可以直接在这个起点上扩充。
二、实现方法
2.1 登录管理
B/S应用里面,所有的资源都可以看成一个url,有些url可以不经授权访问,有的需要用户登录并且验证权限以后才能访问,登录管理就是处理需要保护的url的用户登录问题。
利用servlet可以实现这些url的隔离,在示例里面把需要保护的jsp放在/szone目录里面(通过配置web.xml可以修改),org.zjulhs.jsp.JSPLoginFilter类实现了javax.servlet.Filter接口,当用户通过浏览器访问/szone里面的jsp的时候,JSPLoginFilter会验证当前session是否存在用户变量,如果不存在,说明用户没有登录过,那么通过response.sendRedirect重定向这个访问到login.jsp页面要求用户登录,事实上目前大多数SSO系统也采用这种方式,login.jsp页面处理完成用户登录后,会在当前session里面设置用户变量,会再次将用户访问重定向到刚才的页面,JSPLoginFilter继续验证,这时用户变量已经存在,JSPLoginFilter放行,允许用户继续访问指定页面,流程图如下:
2.2 权限验证
权限验证使用“谁-做-什么”的方式,“谁”就是用户,“做”就是一种操作,“什么”就是一种资源,“做”和“什么”根据业务模式而定,比如一个订票系统,管理员张三可以冻结某个航班的机票,那么“谁”就是张三,“做”就是冻结,“什么”就是某航班的机票,事实上绝大多数情况都可以通过这种简单的模式来达到权限管理的目的。
示例使用了这种方式,为了管理方便,扩展了角色和资源分类,角色是一类相同权限用户的集合,资源分类相当于文件管理系统的文件夹,便于找到相应资源进行授权。
数据库结构如下:
实际使用中只需要根据需要配置相应的prv_resource和prv_operation的数据,然后把这两者结合到prv_privilege表作为一种权限,并通过管理系统授权给用户或者角色。
org.zjulhs.ca.IAuthenLogic接口用来验证权限,基于MySQL5数据库的实现是org.zjulhs.ca.MySQL5AuthenLogic,IAuthenLogic.check(int userId, String operationKey, String resourceKey)返回一个bool值表示userId的用户是否能进行operationKey- resourceKey的操作,operationKey对应prv_operation表的key字段,resourceKey对应prv_resource的key字段。
三、安装方法
1、 安装MySQL5数据库,root密码设置为1,建一个编码为UTF8的ca的数据库,把/db/ca.sql导入ca数据库。通过修改classes/config.xml可以修改默认数据库连接密码。
2、 安装Tomcat5或者Tomcat6,使用JRE6或者JDK6(因为war使用JDK6编译的,如果只能使用JRE5或者JDK5,可以从源代码编译),把ca.war复制到Tomcat的webapps目录。
3、 通过Tomcat的地址访问示例 your_tomcat_port>/ca
四、其他
1、 数据库模型在/db/ca.dm2,使用case studio2.23.1可以进行查看和修改。
2、 中文乱码可以修改Tomcat/conf/server.xml里面的默认连接的URIEncoding=”UTF-8”来纠正,更多JSP乱码问题可以google之。
3、 项目源代码使用Oracle的JDeveloper10.1.3.5开发的,可以去Oracle的OTN网站下载(),当然也可以用eclipse进行开发,只要用eclipse创建一个项目到ca/ca目录,ca/ca目录是一个标准的JSP项目目录,src是java源代码,public_html是web页面代码目录。
|
文件: |
ca.zip |
大小: |
2043KB |
下载: |
下载 | sha1: 610E87B618553AB1E3B1863B74CE67F38867EFB9 sha256: 4C7D4A8A6093B778892AA527344113D1737E0D8A4FE10044CE0327226661B5DE |
|
文件: |
ca.src.zip |
大小: |
521KB |
下载: |
下载 | sha1: DBEB606EC6CA960B9FC6B6B0E76FC30BD99DD128 sha256: B7E9130C31EC6537AE2C2B043260DCA68F9A9908FC1006E828623B69E903A0BB |
阅读(3457) | 评论(0) | 转发(0) |