首页 新闻 会员 周边

跪求运行时数据过滤思路,寝食难安三天了……

0
悬赏园豆:20 [已关闭问题] 关闭于 2012-04-10 17:32

小项目,出于学习MVC3+EF4.3的目的。

在设计权限部分时遇到的问题,功能权限都好办,通过自定义Authorize,重写OnAuthorization()方法即可;

但是,数据权限怎么办啊?难道让我在使用EF的时候,还要做SQL语句拼接吗?

疑问:

1、数据(或者称为资源)如何定义?

2、功能权限基于角色(Role)实现对用户的操作限制,那么数据权限呢?如何限制某个用户、某角色用户或者某群组用户对同一种资源,不同数量级的访问?如何定义这种规则(Rule)?

3、Java是可以配置Filter,在运行时实现不同用户登录时,访问的资源进行过滤;最近做过的C#项目,是通过根据登录用户的信息动态构造SQL语句来实现数据过滤的;那么基于EF框架,在不使用SQL语句拼接,或者使用SQL语句拼接,但结果仍然能够被EF托管的条件下,有没有实现运行时数据过滤的方式?

ASP.NET MVC框架是开源的,但EF好像不是啊……

其实,还有类似于如何在代码中实现数据权限检查的问题,如何分离业务逻辑与数据过滤的问题……

飞扬的尘埃的主页 飞扬的尘埃 | 小虾三级 | 园豆:1318
提问于:2012-03-31 11:32
< >
分享
所有回答(4)
0

不太明白你的需求,数据权限按照功能权限一样的设计方法不可行吗?不知道你们数据是怎么存储的。可以建立一个表用来存放数据类型和数据表之间的关系,然后再建一个表存放数据类型和用户角色的联系。

会长 | 园豆:12401 (专家六级) | 2012-03-31 11:44

其实有想过按照 功能权限 的方式设计 数据权限,但是按照“主谓宾”的思路,功能权限 的主语似乎固定为角色(Role),谓词只有“允许”和“禁止”,宾语具体到MVC中,则只有Controller和Action两种;另外,功能权限的检查 很容易实现,只需要重写OnAuthorization()方法,查询当前登录用户的角色即可。

数据权限 的差异貌似就太大了。

需求的话,可以简单的描述为,管理员可以查看所有学生信息,老师只能查看本班学生信息,学生只能查看本人信息,另外,有个老师是管理员,但他只能查看本班学生信息。

支持(0) 反对(0) 飞扬的尘埃 | 园豆:1318 (小虾三级) | 2012-03-31 12:03

@飞扬的尘埃: 哦。不太懂了,祝你成功!

支持(0) 反对(0) 会长 | 园豆:12401 (专家六级) | 2012-04-01 12:12
0

利用组织架构来处理吧。比如说,个人-》个人,组长->一组,班长->一班,......

forhells | 园豆:724 (小虾三级) | 2012-04-01 00:02

这样处理,多角色用户的访问范围还是不能单独配置限定啊。

谢谢回复。

支持(0) 反对(0) 飞扬的尘埃 | 园豆:1318 (小虾三级) | 2012-04-05 10:10

@飞扬的尘埃: 

单独配置限定的话,需要另建角色数据规则来处理,比较复杂。

支持(0) 反对(0) forhells | 园豆:724 (小虾三级) | 2012-04-25 00:17
0

OnAuthorization 不能调用数据吗? 查询当前用户是否具备调用这个方法的权限 为什么要拼sql?

君之蘭 | 园豆:230 (菜鸟二级) | 2012-04-01 12:26

你描述这个就是功能权限的实现过程啊,我现在遇到的难题是,两个同角色用户都能访问某方法的时候,获取的数据范围是有区别的,要对这个描述建立规则。

支持(0) 反对(0) 飞扬的尘埃 | 园豆:1318 (小虾三级) | 2012-04-05 10:16
0

这个需要记录中有定义好的过滤原数据,比较复杂

Alvin | 园豆:828 (小虾三级) | 2012-09-22 23:20
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册