rbace是一个关于细粒度权限管理的开源项目,项目地址在这里 http://github.com/caryl/rbace/tree/master
项目的目标是做一个细粒度、可插拔的rails开源权限系统。开始于2009年3月份,由于时间关系,一直没有发布。现在发布出来,欢迎大家多提宝贵意见,如果有兴趣参与,请和我联系。
目前还没有更多的文档,如果大家感兴趣,近期打算结合对权限系统的认识和rbace,写一系列的文档,和大家共同探讨。
先把README文件复制一份,权当发布文档了 :)
关于细粒度的权限管理,在权限管理圈子
有一些资料,感兴趣的同学可以参考。
== Welcome to RBACE ==
RBACE 目前是一个基于RBAC模型的权限系统的参考实现,使用filter和aop的方式,支持功能的访问控制和细粒度的数据过滤。
== 数据模型 ==
includes includes
.--. .---.
| v | v
.------. [URs] .------. [RPs] .------------. [PRs] .----------.
| User |<---------->| Role |<------T------>| Permission |<---------->| Resource |
'------' * * '------' * |* * '------------' 1 * '----------'
| | *
| | [PKs]
|* | *
.----------. .-------. .------.
|LimitGroup|<----->| Klass |<----->| Meta |
'----------'* 1'-------'1 *'------'
1| |1
| .------------. |
'---------| limitScope |--------'
* '------------'*
== 功能和特点 ==
* 功能授权使用 RBAC 模型
支持RBAC LEVEL3
授权策略包括 允许 拒绝 弃权(继承)
* 支持细粒度的数据级权限,通过元数据自定义条件设置访问数据的范围,支持数据的查询和更新,支持通过关联关系进行定义
如支持定义业务员只能查看自己的订单,经理可以查看本部门订单等
支持定义业务员只能填写5000以下金额的订单等
* 支持细粒度的访问权限,如ip,时间,params 等等...,可通过元数据自定义多种条件
如支持定义仅某些网段可以使用某功能等
支持定义仅某时间段可以使用某功能等...
* 支持 current_user.can_edit_topic? current_user.can_edit_topic_with(@topic) 等调用方法(method_missing),可以方便的根据授权控制界面
如<%=link_to @order if current_user.can_edit_order%>
* 使用filter和AOP的方式实现权限控制和数据过滤,无须修改已有系统代码
仅需要在系统中增加几行代码
可自动生成系统元数据
* 使用数据库保存权限数据
可在运行时修改权限定义
使用缓存优化权限查询
* 绑定permission权限的菜单的实现
根据当前用户权限,动态显示用户菜单
* 基于元数据的自定义查询
controller:dynamic_searchable :index
view:<%=dynamic_search_for Model%>
即可实现基于元数据的动态查询
* 更详细的说明请参考 doc/doc.mm (FreeMind: http://freemind.sourceforge.net/wiki/index.php/Download)
! 本项目功能目前仅为参考实现,在生产环境使用请自行评估
== todo list ==
* 属性级权限,自定义对model每个属性的可见,可编辑权限
* 作为子项目、plugin或gem的形式发布
* 补充文档
* model 访问 context 的处理需要重构
* more and more
== 环境、gems 和 plugins ==
ruby: 1.8.7
rails: 2.3.3
测试:shoulda factory_girl shoulda_generator
分页:will_paginate
i18n: i18n_generator
nested_set: awesome_nested_set
缓存: memcached
其他:yaml_db
== 安装和运行 ==
安装依赖的 gems
配置 config/database.yml
rake db:create:all
rake db:migrate
rake db:data:load
默认管理员登录为 admin/admin
== rake stats ==
+----------------------+-------+-------+---------+---------+-----+-------+
| Name | Lines | LOC | Classes | Methods | M/C | LOC/M |
+----------------------+-------+-------+---------+---------+-----+-------+
| Controllers | 782 | 668 | 11 | 73 | 6 | 7 |
| Helpers | 27 | 26 | 0 | 1 | 0 | 24 |
| Models | 807 | 503 | 15 | 54 | 3 | 7 |
| Libraries | 156 | 130 | 1 | 20 | 20 | 4 |
| Integration tests | 0 | 0 | 0 | 0 | 0 | 0 |
| Functional tests | 152 | 113 | 10 | 8 | 0 | 12 |
| Unit tests | 475 | 412 | 14 | 7 | 0 | 56 |
+----------------------+-------+-------+---------+---------+-----+-------+
| Total | 2399 | 1852 | 51 | 163 | 3 | 9 |
+----------------------+-------+-------+---------+---------+-----+-------+
Code LOC: 1327 Test LOC: 525 Code to Test Ratio: 1:0.4
by caryl
http://www.fandouai.com/articles/about_caryl
group: http://groups.google.com/group/rbace
分享到:
- 2009-08-05 22:59
- 浏览 1676
- 评论(2)
- 论坛回复 / 浏览 (0 / 5064)
- 查看更多
相关推荐
ASP.NET项目移植到Ruby on Rails (ROR)的实践中,DB转移是一个关键步骤。这个过程涉及到将现有的ASP.NET应用程序的数据模型、数据库结构以及业务逻辑迁移到ROR框架中。在这个过程中,我们需要理解两个不同框架之间的...
官方离线安装包,亲测可用。使用rpm -ivh [rpm完整包名] 进行安装
官方离线安装包,亲测可用。使用rpm -ivh [rpm完整包名] 进行安装
官方离线安装包,测试可用。使用rpm -ivh [rpm完整包名] 进行安装
官方离线安装包,亲测可用。使用rpm -ivh [rpm完整包名] 进行安装
项目 安装 克隆存储库 git clone https://github.com/nevermind15/ror-news-api.git cd ror-news-api 安装依赖项 使用和 : bundle && yarn 初始化数据库 rails db:{create,migrate} 服务 rails s
非常流的开源项目管理系统,windows版一键安装,非常方便。Redmine是用Ruby开发的基于web的项目管理软件,是用ROR框架开发的一套跨平台项目管理系统,据说是源于Basecamp的ror版而来,支持多种数据库,有不少自己...
【ror-codelit-landing:基于 Ruby on Rails 的登陆页面】是一个使用 Ruby on Rails 框架构建的项目,旨在创建一个简洁而功能完备的登录界面。Ruby on Rails(简称 RoR)是用 Ruby 语言编写的开源 web 开发框架,它...
官方离线安装包,亲测可用。使用rpm -ivh [rpm完整包名] 进行安装
官方离线安装包,亲测可用。使用rpm -ivh [rpm完整包名] 进行安装
官方离线安装包,测试可用。使用rpm -ivh [rpm完整包名] 进行安装
官方离线安装包,测试可用。使用rpm -ivh [rpm完整包名] 进行安装
官方离线安装包,测试可用。使用rpm -ivh [rpm完整包名] 进行安装
官方离线安装包,测试可用。使用rpm -ivh [rpm完整包名] 进行安装
官方离线安装包,测试可用。使用rpm -ivh [rpm完整包名] 进行安装
官方离线安装包,测试可用。使用rpm -ivh [rpm完整包名] 进行安装
官方离线安装包,测试可用。使用rpm -ivh [rpm完整包名] 进行安装
官方离线安装包,测试可用。使用rpm -ivh [rpm完整包名] 进行安装
官方离线安装包,测试可用。使用rpm -ivh [rpm完整包名] 进行安装
官方离线安装包,测试可用。使用rpm -ivh [rpm完整包名] 进行安装