浏览 5070 次
精华帖 (3) :: 良好帖 (6) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2009-08-05
最后修改:2009-08-05
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
声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |