ASP.NET MVC中基于组的授权

时间:2011-04-06 15:27:35

标签: asp.net-mvc asp.net-membership authorization custom-authentication

我有管理员,用户等网站角色,这很好。

但是,假设我有一份法律申请(或任何类似的申请)。我有一个名为Case的实体。现在,我可以有很多案例,并非所有用户都可以访问任何特定案例。假设Fred和Tom应该可以访问Case1,但只有Gina和Rebecca可以访问Case2?

非常简单,对吧?我们有案例,用户可以属于案例。这是第一部分。第二部分是如何拥有“Case Roles”让Fred成为Case1的“管理员”并能够做出重大改变但是Tom可能只是Case1的“用户”而且只能做一些小事而且只读访问等。

我知道我可能需要实现自定义属性等,但我在Web上找不到任何关于这种特殊事物的例子。但我认为这在大多数商业应用程序中都必须非常普遍。 (如Basecamp或Highrise等)

更新让我举个不同的例子:

将项目管理软件作为Basecamp等服务应用程序。用户可以创建“项目”。然后该用户可以邀请其他用户访问她的“项目”。但是,创建用户可以为每个用户分配不同的权限。基本问题是如何在ASP.NET MVC中执行此类操作。

1 个答案:

答案 0 :(得分:0)

我从您的问题中理解的是,每个案例都是一个实体(db中的一行),并且您希望将不同案例(实体)的不同访问权限分配给不同的角色。在这种情况下,您可以拥有一个超级管理员角色,将案例的访问权限分配给其他角色。根据此信息,您可以编写自定义atuhorize属性,并从超级管理员获取当前登录用户/角色从数据库获取的权限,并根据此条件做出决策。此外,创建案例的访问权限是通用的,因为在创建之前它不存在,因此任何有权创建案例的人都可以创建任何案例(无论是case1还是case49)。一旦创建案例,也可以由案例的创建者设置此案例的权限。