RBAC 浅析_示例代码
来源:互联网 发布:易语言用数据库做登录 编辑:程序博客网 时间:2024/05/19 13:06
对于RBAC的更多描述 就不废话了 相关的参考文档都说的很好啊
参考文档:
http://blog.csdn.net/painsonline/article/details/7183613
http://www.cnblogs.com/zc22/archive/2007/10/08/917493.html
http://blog.csdn.net/painsonline/article/details/7183629
http://blog.sina.com.cn/s/blog_65a2fe5d01012riv.html
http://www.blogjava.net/rosen/archive/2005/08/12/9879.html
/** * RBAC模型:基于角色的访问控制 * 五类:用户、角色、权限、用户与角色关系、角色与权限关系 * 用户与角色属于多对多的关系,角色与权限属于多对多的关系 * 用户只与角色关联,而角色可拥有各种权限并可继承 * 用户通过角色与权限进行关联 * @author undergrowth * */
示例代码
演示了不同的人员拥有多种角色 进行相关的操作
package com.undergrowth.rbac;import java.util.ArrayList;import java.util.HashMap;import java.util.Iterator;import java.util.List;import java.util.Map;/** * RBAC模型:基于角色的访问控制 * 五类:用户、角色、权限、用户与角色关系、角色与权限关系 * 用户与角色属于多对多的关系,角色与权限属于多对多的关系 * 用户只与角色关联,而角色可拥有各种权限并可继承 * 用户通过角色与权限进行关联 * @author undergrowth * */public class SimpleRbac { Map<String, List<String>> userToRole=new HashMap<String, List<String>>();Map<String, List<String>> roleToPermission=new HashMap<String, List<String>>();public SimpleRbac(String name,String role){//角色拥有权限List<String> boss=new ArrayList<String>();boss.add("加薪水");boss.add("开除人");List<String> manager=new ArrayList<String>();manager.add("招新人");//将角色拥有的权限加入字典 方便查询roleToPermission.put("boss", boss);roleToPermission.put("manager", manager);//用户拥有角色List<String> bossUser=new ArrayList<String>();bossUser.add(role);//默认情况下 拥有招新人的角色bossUser.add("manager");userToRole.put(name, bossUser);}/** * 加薪水 * @param user */public void addSalary(String user){iteratorUserOperator(user, "加薪水");}/** * 开除人 * @param user */public void dismiss(String user){iteratorUserOperator(user, "开除人");}/** * 招新人 * @param user */public void recruit(String user){iteratorUserOperator(user, "招新人");}/** * 迭代用户操作 * @param user * @param operator */private void iteratorUserOperator(String user, String operator) {if(userToRole.get(user)!=null){for (Iterator iterator = userToRole.get(user).iterator(); iterator.hasNext();) {//获取用户拥有的角色String role = (String) iterator.next();if(roleToPermission.get(role)!=null){//查看用户所对应的角色是否具有此权限if(roleToPermission.get(role).contains(operator)){System.out.println(operator+"成功");return;}}}}//执行到此 表示此用户对应的角色没有相应的权限System.out.println("你不是boss,没有权限"+operator);return;}}
测试代码
package com.undergrowth.rbac;import junit.framework.TestCase;public class SimpleRbacTest extends TestCase {String name="jack";String role="";SimpleRbac simpleRbac=new SimpleRbac(name,role);public void testAddSalary() {simpleRbac.addSalary(name);}public void testDismiss() {simpleRbac.dismiss(name);}public void testRecruit() {simpleRbac.recruit(name);} public void testAll(){testAddSalary();testDismiss();testRecruit();}}
当role="" 时 因为默认拥有招新人权限 所以testAll之后 控制台信息
你不是boss,没有权限加薪水你不是boss,没有权限开除人招新人成功
当role="boss" 的时候 testAll 控制台输出
加薪水成功开除人成功招新人成功
上面只是为了测试 才直接赋值的
权限、角色、用户、角色与权限、用户与角色的关系 可以参考上面的参考文件中的数据库设计示例 进行处理 再获取即可
0 0
- RBAC 浅析_示例代码
- RBAC 权限模型浅析
- V4L2总结(3)_代码示例_1__zzhere2007
- V4L2总结(4)_代码示例_2__zzhere2007
- Extjs代码示例_动态更新进度条
- THINKPHP中RBAC代码备注
- 2-驱动_加载函数_卸载函数_注册设备号_led驱动示例代码
- 黑马程序员_网络编程示例代码与总结
- 黑马程序员_网络编程示例代码与总结
- RBAC
- RBAC
- rbac
- RBAC
- RBAC
- RBAC
- RBAC
- RBAC
- RBAC
- Java的内存机制
- 关于struts2的值传递小例子
- SpringMVC实例
- 拖动浏览器大小,jquery获取窗口长宽
- Android(错误)—Failed to install DroidIPCam.apk on device 'emulator-5554': timeout
- RBAC 浅析_示例代码
- INSTALL_FAILED_SHARED_USER_INCOMPATIBLE解决办法
- Android -SQLite 操作第一章 SQLiteOpenHelper
- 更改对于登录“sa”失败,无法设置主体“sa”的凭据
- cygwin *** 多个目标匹配。 停止
- log4j配置多个日志文件,输出特定的日志信息
- rtp协议分析
- C# ? and ??
- TCP三次握手、四次挥手