"Ralasafe是一款开源的权限管理系统,旨在提供功能级和数据级权限管理解决方案。该项目由汪金保发起,自2004年起研发,采用MIT开源协议,已发展为社区化研发的中间件。Ralasafe包含权限引擎(约800k)和Web管理控制端(约1.3M),其中权限引擎必须部署,Web管理控制端可根据需求选择部署。它不约束开发者的编程风格,提供图形化的权限管理,使得开发者无需编程即可定制权限策略。"
Ralasafe的核心功能包括:
1. **权限管理**:支持功能级权限和数据级权限,如行列级和字段内容级的权限控制,允许管理员通过图形化界面设置权限策略,同时提供在线模拟测试。
2. **中间件特性**:Ralasafe作为中间件,不强制框架集成,而是通过服务调用来实现权限决策,不影响开发者原有的编程风格。它提供开箱即用的管理界面,但并不直接提供现成的权限管理模式或组件。
3. **权限模型**:包括查询权限和决策权限两部分。查询权限决定用户可以从服务器获取哪些数据,决策权限则在用户提交数据时进行审批。权限策略基于用户分类和业务数据分类,通过规则来定义允许或拒绝的条件。
4. **API接口**:Ralasafe提供了四个主要的API接口,用于权限判断和操作:
- `hasPrivilege(int privilegeId, User user)`: 检查用户是否具有特定权限。
- `query(int privilegeId, User user)`: 根据权限查询数据。
- `permit(int privilegeId, User user, Object businessData)`: 在用户提交业务数据时进行权限检查。
- 更详细的API文档可以在`org.ralasafe.Ralasafe`和`org.ralasafe.WebRalasafe`的javadoc中查看。
5. **推荐的权限方案**:提倡权限与业务逻辑、业务数据分离,以及责权分离的管理方式,即权限规则的制定者和实施者应分开,以确保权限管理的合理性和安全性。
6. **示例应用**:通过两个权限管理的例子,展示了如何为不同用户分类设置不同的查询权限,以及如何基于业务数据分类设置决策权限,如限制单笔借款金额和全天借款总额。
Ralasafe是一个强大的、灵活的权限管理工具,适用于需要精细控制用户访问权限的系统,其设计思路和提供的API能帮助开发者轻松地集成和管理权限控制,提高系统的安全性和合规性。