软件项目最佳实践: 可编程的权限控制
当我们面对复杂的权限控制一愁莫展时,因为未来不明确需求而烦恼时,我们期望项目的权限控制是可编程的,但手中的代码不堪入目,只能暗自发誓接手下一个新项目时,一定重新设计这笨拙的权限控制框架。可是,苦于软件项目人手少,时间紧,还是沿用从前的架构,到后来仍是叹息,仍是抱怨。
事情终于有了转机,末日重生,不灭亡,必疯狂,我开源了可编程权限管理框架,可以解决你的问题,让编码重新成为乐趣。
通常权限管理都会封装成组件,提供设置界面完成用户赋角色,设置组织,给各角色定义可操作的数据项,也许可以简单地用伪SQL编码,更高级的支持C#动态表达式。即使如此,开发人员面对个别复杂需求还是有力不从心的时候,恨不能去修改底层组件。
事实上,我们不要庞大的组件体系,我们仅需要几个类配合工作来校验用户的操作权限。因为实际业务场景中,我们可能需要:
1. 运行期给用户赋角色。
2. 运行期给各角色赋权限。
3. 运行期判断当前用户的权限范围。
4. 运行期判断哪些用户可操作此数据。
5. ......
可编程的权限控制框架已经实现了大部分权限相关的需求(第4项至今没有实现方案),同时把更多的控制能力还给开发人员。假设手上的项目都用同一套权限控制框架,更进一步减少了项目维护的复杂度,这是软件项目开发的最佳实践,也是每一个开发人员的梦想。
欢迎下载试用可编程的权限控制框架,源码在 http://ppcf.codeplex.com ,暂命名 Programmable Permission Control Framework。项目基于Asp.Net + MVC3,参考了博客园个别示例。
亮点:
1. 基于角色的简洁权限控制逻辑(RBAC),不引入用户组、岗位、职务、组织架构等概念(引入了角色鉴权参数概念)。
2. 可以轻易与现有项目集成。多项目可以共享权限控制框架,同时可以集成到富客户端,如 WPF 或 WinForm 项目,未来上传 WPF 集成示例。
3. 针对 MVC3 项目,此框架另外扩展了对 Action 调用的权限控制,对文件访问的权限控制,WCF访问控制。
4. 支持多数据库,共享权限控制框架。权限设置,用户管理可以使用示例自带的数据库,原有的数据库,甚至不用数据库。
5. 分层设计,数据访问用 EF 4.X + Repository 模式,对象容器用 Unity 2.0 。
6. 没有Session,没有视图,没有存储过程,保持简洁。
7. 提供了一套 T4 模板,可以快速生成简易代码。
不足:
1. 前端 UI 和 JS 不够专业。
2. 无法"运行期判断哪些用户可操作此数据"。
3. 从实际项目中抽离出来,有待进一步测试。
4. 未与 WF 集成。
安装要求:
vs2010 旗舰版 + sp1 + mvc3 + powershell2.0 + nuget + EF4.2 + Unity2.0
测试用户登录: test 密码: test
附类图: