SpringMVC3.1.1+Spring3.1.1+Hibernate4+Velocity+EasyUI+ZTree实现RBAC基于角色的访问控制(二)
接着上文的写,我们来看看实体之间的关系,一共有五张数据库表,用户表、角色表、资源表,还两个关联表。
解释下图,一个用户关联一个角色(也可以关联多个,本文为了简单,只关联一个。),一个角色关联多种资源,这里的资源可以理解为我们的系统里面要执行的操作,比如一个添加用户的saveUser.do等。如图1所示。
图1
先来看看大致实现了的效果图吧,首先是资源管理。对于资源的增、删、改、查。如图2所示。
图2
图2使用的是ztree来实现的,是动态使用json数据构造的一颗树。关于ztree的使用,后续的文章会说明,其实官方的文档写的就已经很详细了。图2中所示的“+”号,表示添加资源,后面两个图标分别是修改资源、删除资源,如果删除根节点,则所有的子节点、孙子节点都删除。删除之前给用户提示。
这里说明下的是,这个ztree是可以拖拽子节点的,我这个实例里面没有实现这个功能,不过这个功能实现起来也简单,参见官方文档。
图3所示的是,添加角色功能,添加角色,同时给角色关联相应的资源。这个树,也是动态的构造出来的。
图3
图4所示的是给用户授权,选择用户的角色,然后保存几个,这个用户就关联了角色,并拥有了角色相应的权限。这个下拉的菜单也是动态填充的。
图4
关于图5 就是角色列表,用于管理,没有什么太多的需要说明的。
图5
本系列文章,想实现的功能是,对于没权限的用户来说,登录进系统后,
1、无权限的不显示
这种是最基本的权限的处理了,这里会借助velocity来实现。
2、无权限,登录之后,在地址栏输入xxx.do 同样也要拦截提示用户无权限。
关于第二点,有的只是做了针对无权限不显示的这种,其实这种很明显有一个缺点,就是,如果用户登录之后,且没对某一资源操作的权限,但是,他知道你请求的.do的地址,有的同志会说,我的action 其他人怎么会知道,其实,一般多猜测,借助第三方工具也是可以弄到的。
本文到此结束,下面的文章,讲开始整个系统的构建。
本文转自 w156445045 51CTO博客,原文链接:http://blog.51cto.com/enetq/1417352,如需转载请自行联系原作者