首页 新闻 会员 周边

大家的权限管理是怎么设计的?

0
悬赏园豆:50 [待解决问题]

 我的开发框架是mvc3

我的想法是将每个action 以 {area}{Controller}{Action}格式保存在了数据库中,这样每个action都是唯一的,但后来发现action可以重载,所以不怎么准确

1.大家是怎么给action取标识存在数据库的呢?


假如存好了action,分配给了用户 或者 角色后

在验证的过程中 我是重写了AuthorizeAttribute ,里面实现了从数据库中获取权限数据,然后判断用户是否有权限访问当前Action ,这样实现了权限验证  ,但是,每一次操作都需要验证 ,所以每次操作都有额外的数据库访问操作  , 如果模块数 和用户数 角色数 都比较多,这应该很消耗资源吧? 

2.请问大家是怎么验证权限的呢?

绿箭侠的主页 绿箭侠 | 初学一级 | 园豆:26
提问于:2013-09-30 16:38
< >
分享
所有回答(5)
0

权限数据做缓存。

然后每个Action可以加注解(特性)

幻天芒 | 园豆:37175 (高人七级) | 2013-09-30 19:03
0

一个如楼上所说的可以做缓存,另一个,我想说的就是,别太小看数据库的性能。从数百万行数据里找几行数据,一般也就在10~20毫秒以内(你模块数和用户数一般不可能达到这么多吧)。在现阶段,以你的带宽和用户访问数量来看,直接在Attribute里面实现权限检查是可行的,性能这方面你不需要过分担心。

除了使用Attribute来作检查(比较安全),还有一个方法就是直接那那个操作的按钮(例如删除)给禁用也是一种办法。

丨劇毒丨 | 园豆:202 (菜鸟二级) | 2013-10-02 23:31
0

看看这个权限系统如何,UPMS通用用户权限系统

当你个当 | 园豆:222 (菜鸟二级) | 2013-10-11 10:28
0

所有的控制继承一个控制器,在继承的总控制器做权限控制,也就是你说的mvc的筛选器,实际上你可以把数据缓存起来,用权限菜单来控制权限,而不用每次是判断,第一次加载的时候都把你有的权限加载上来了,在菜单那控制好,缓存下数据就ok了

流年莫逝 | 园豆:247 (菜鸟二级) | 2013-10-23 14:12
0

推荐你看看这个开源项目。给分吧

Anycmd是一个.net平台的完全开源的,完整支持RBAC的(包括核心RBAC、通用角色层次RBAC、静态职责分离RBAC和动态责任分离RBAC),将会支持xacml的通用的权限框架、中间件、解决方案。完整的RBAC规范所定义的能力只是anycmd所提供的能力集的一个子集。

权限系统干了什么?

给出一套方法,将系统中的所有功能标识出来,组织起来,托管起来,将所有的数据组织起来标识出来托管起来, 然后提供一个简单的唯一的接口,这个接口的一端是应用系统一端是权限引擎。权限引擎所回答的只是:谁是否对某资源具有实施 某个动作(运动、计算)的权限。返回的结果只有:有、没有、权限引擎异常了。

xuefly | 园豆:135 (初学一级) | 2014-10-09 14:22
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册