Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/37.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc ASP.NET MVC中基于组的授权_Asp.net Mvc_Asp.net Membership_Authorization_Custom Authentication - Fatal编程技术网

Asp.net mvc ASP.NET MVC中基于组的授权

Asp.net mvc ASP.NET MVC中基于组的授权,asp.net-mvc,asp.net-membership,authorization,custom-authentication,Asp.net Mvc,Asp.net Membership,Authorization,Custom Authentication,我有像管理员,用户这样的网站角色,这很好 但假设我有一份法律申请(或任何类似的申请)。我有一个名为Case的实体。现在,我可以有很多案例,并不是所有用户都应该有权访问任何特定案例。比如说弗雷德和汤姆应该可以接触到案例1,但只有吉娜和丽贝卡可以接触到案例2 很简单,对吧?我们有案例,用户可以属于一个案例。这是第一部分。第二部分是如何设置“案例角色”,以便Fred可以成为案例1的“管理员”,并能够进行重大更改,但Tom可能只是案例1的“用户”,只能做一些小事情,并具有只读访问权限,等等 我知道我可能

我有像管理员,用户这样的网站角色,这很好

但假设我有一份法律申请(或任何类似的申请)。我有一个名为
Case
的实体。现在,我可以有很多案例,并不是所有用户都应该有权访问任何特定案例。比如说弗雷德和汤姆应该可以接触到案例1,但只有吉娜和丽贝卡可以接触到案例2

很简单,对吧?我们有案例,用户可以属于一个案例。这是第一部分。第二部分是如何设置“案例角色”,以便Fred可以成为案例1的“管理员”,并能够进行重大更改,但Tom可能只是案例1的“用户”,只能做一些小事情,并具有只读访问权限,等等

我知道我可能需要实现一个自定义属性,等等,但我在网上找不到这类事情的任何例子。但我想这在大多数业务应用程序中一定很常见。(如大本营或高层建筑等)

让我举一个不同的例子:


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

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

我只需要为每个能力设置角色。创建一个可以更新案例1的方法,并且只有管理员可以访问该方法。创建一个方法来读取案例1,并且只有用户/管理员可以访问该方法。至于UI,您只需要创建多个UI元素,并根据它们的角色显示和隐藏。@Evan Larsen,这是如何解决基本问题的?问题是用户可以创建案例。我不能硬编码“Case1”或“Case2”。用户可能会创建“Case49”,然后想将用户与之关联。此外,我不想只显示/隐藏案例的链接,因为如果用户试图转到/Case/1/编辑或其他任何位置,并且不是该案例的正确用户级别,我不想允许。顺便说一句,我会接受答案。:)只是到目前为止我问的所有问题都没有提交任何答案!这不是一件很基本的事情吗?似乎几乎所有的商业应用程序都需要支持这样的东西。我想这就是我要说的。所以我想我的问题是,在自定义属性方面,它看起来是什么样的?这似乎很简单。将项目管理软件作为服务应用程序,如Basecamp。用户可以创建一个“项目”。然后该用户可以邀请其他用户加入她的“项目”。但是,创建用户可以为每个用户分配不同的权限。基本问题是如何在ASP.NET MVC中实现这类功能。您必须创建一个小的权限管理模块,在该模块中可以定义文档的不同权限(创建、编辑、删除)。创建案例后,您可以要求创建者将这些权限分配给其他角色/用户。为此,您必须有单独的UI,列出表或网格中的所有角色,前面有“允许编辑”和“允许删除”按钮。按下此按钮后,您可以将该信息保存在数据库表中。完成此操作后,您只需在“授权”属性中查阅相应的表