软件项目最佳实践: 可编程的权限控制

软件项目最佳实践: 又谈权限管理

      当我们面对复杂的权限控制一愁莫展时,因为未来不明确需求而烦恼时,我们期望项目的权限控制是可编程的,但手中的代码不堪入目,只能暗自发誓接手下一个新项目时,一定重新设计这笨拙的权限控制框架。可是,苦于软件项目人手少,时间紧,还是沿用从前的架构,到后来仍是叹息,仍是抱怨。

     事情终于有了转机,末日重生,不灭亡,必疯狂,我开源了可编程权限管理框架,可以解决你的问题,让编码重新成为乐趣。

     通常权限管理都会封装成组件,提供设置界面完成用户赋角色,设置组织,给各角色定义可操作的数据项,也许可以简单地用伪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

附类图:

 

 

 

 

 

posted @ 2012-12-24 10:18  heguo  阅读(2007)  评论(3编辑  收藏  举报