基于MVC Action粒度的权限管理

原帖地址膜拜一下

权限管理是个老生常谈的功能,我看博客园也有不少“高手”写了相关的文章,但大多不是空谈理论,就是做的十分傻瓜和玩具差不多没有真正项目实用性。少数基于RBAC的看设计还可以,但犹抱琵琶半遮面的,谈到关键实现就阳痿,生怕别人学到似的。

  权限管理是每个项目都要用到的,但一般想写好也有一定难度。所以不少人动不动就想做所谓“通用权限管理”,但基本我看都是雷声大雨点小。弦哥也 写过所谓通用权限 ,什么基于RBAC,什么资源+操作=权限。搞来搞去灵活是灵活了,结果配置十分复杂在项目中使用并不理想,再加上“通用”二字,那就必须要独立于平台技 术和项目,实现解耦,而权限是经常都需要访问的,所以数据传输,效率也成了大问题。

  而且通用权限的需求是非常多的,一般很难想全,我看园子里吉日哥虽然技术不咋地,但征集权限需求这个路子还是对的,至少比有些人随便写个玩具就敢号称“通用权限”来的好些。

  BB了这么多,来说说我的权限管理吧,正如上面所说我基本放弃搞所谓通用权限了,在吉日哥非常牛X非常通用的权限管理露出真面目之前,我觉得针 对不同项目特点写不同的权限管理功能还是目前比较可行办法。所以我的这个权限通用肯定不敢说,只能说是局限在MVC框架下的,满足我这个项目需求的权限管 理。

  由于吉日哥的权限老是遮遮掩掩,我看他放出的那点代码也非常蹩脚,他的通用权限不知道啥时候才能完全憋出来...所以弦哥带上全部Demo和源码给大家一个安慰吧。

  由于篇幅有限 数据库访问这块我不解释(之前的系列已经很详细的讲过了),EXTJS代码我不解释(之后会详细写EXTJS的典型应用场景),凡涉及到与权限无关的代码我不解释(大家有兴趣可以提出来,以后我详细介绍)。

  上传完demo都凌晨6点了,太累。。。下篇再放详细的实现思路和代码吧,全部可运行的源码也在下篇放出来....有大家有啥意见可以提出来,在下篇解释。

虽然有了demo但发图的国际惯例不能丢:

在线Demo :

地址:http://218.60.8.35:1234/

服务器:网通

端口:不要禁用1234端口应该就可以访问

注意:连了数据库的,时间仓促肯定有漏洞,不要捣乱哈:)

登录用户: 1.用户名:牛头人战士 密码:000000 权限:有全部菜单页面,不能进行数据库的更改操作(不影响录入体验)

      2.用户名:老虎MM  密码:000000  权限:少两个菜单页面,不能进行数据库的更改操作(不影响录入体验)

      3.用户名:admin 密码不公开 权限:所有权限

      注:以上的实现都是通过权限管理s配置出的哈,没有任何硬编码

适用项目

基于Asp.Net MVC开发并严格按照MVC思想进行编码的MIS项目

功能模块

用户管理

科室管理

角色管理

菜单管理

Atcion粒度的功能权限管理

登录,注销等

关键概述:

用户和科室是多对多的..

用户和角色是多对多的..

角色和菜单是多对多的..

角色和Atcion是多对多的..

角色是可以继承的..

登录是用自带的Form验证的..

所有权限判定相关的数据都是缓存的..

菜单是动态配置的..

Action权限维护是通过反射出来的,方便选取(权限判断等没有用反射)...

最小权限判定的边界是在Action请求...

判断逻辑是菜单权限必须判断,Action细粒度的功能权限只有被维护才判断...

由于是Asp.net MVC +Ext 所以基本页面上的每个操作(Action请求)都可以控制到的。肯定是可以满足MIS类项目的权限控制粒度需求了...

是通过自定义的MVC的Filter实现的(没有用自带的那个AuthorizeAttribute)...

局限性:

只能基于ASP.NET MVC下使用...

没有数据权限管理(自己可以加...我看用AOP方式实现就不错)...

如多级授权,单点登录等扩展功能没有实现(自己可以扩展)...

表设计

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值