asp.net-mvc - 如何使用 activedirectorymembershipprovider 在 asp.net mvc 应用程序中实现角色层次结构

标签 asp.net-mvc active-directory asp.net-membership

在我的 asp.net mvc 应用程序中,我使用的是 activedirectorymembershipprovider。在事件目录中,为了简单起见,我创建了几个类似于“普通”和“管理员”的角色(组)。

我目前正在通过获取 httpcontext 的 IPrincipal 并调用 User.IsInRole(nameOfRoleGoesHere); 来查询用户是否处于角色中。

我正在寻找的行为是让我能够询问用户是否处于“管理员”角色,然后隐式询问用户是否处于该角色之下的所有角色(在这种情况下,角色“正常”将低于“管理员”) ”)。 由于我的角色主要是垂直的(如果这有意义的话),这种角色继承目前似乎对我的应用程序有意义。

我怎样才能得到这种行为 - 我必须实现一些自定义逻辑,允许我请求角色“管理员”,但抽象出实际上在幕后的事件目录中请求“正常”和“管理员” - 或者是是否可以在事件目录中构建组以某种方式自动给我这种行为?

对于我对 ASP.NET、Active Directory 和 .NET 安全性的任何严重误解表示歉意 - 我是菜鸟并正在尝试。

最佳答案

AD 支持一个组是另一个组的成员的概念吗?

所以你可以有以下内容:

用户:安妮、鲍勃、查理、道格拉斯、埃利奥特、弗雷德和乔治。

角色:普通、编辑、管理员

然后将每个组定义为:

管理员有以下成员:George

编辑有以下成员:“Admin”、Douglas、Elliot

Normal 拥有以下成员:“Editor”、“Admin”、Anne、Bob、Charlie

因此,您知道 George 是 Normal、Editor 和 Admin 的成员,因为 Admin 的所有成员都包含在这些组中,而 Douglas 仅是 Editor 和 Normal 的成员,Anne 只是 Normal 用户,并且如果您询问,AD 会说“是的,George 是普通用户”。

但是:(据我所知)没有一个官方的、MS 支持的 ActiveDirectory RoleProvider 可以用正确的 AD 角色填充 RolesPrinciple - 有那里有一对like this one on CodePlex您将什么定义为您的角色提供者?

默认的 ASP.NET 角色提供程序不支持角色层次结构,因此您需要:

  1. 将用户分配到他们有权访问的每个角色,并仅检查您感兴趣的角色。
  2. 将用户置于他们可以访问的最强大的角色,然后检查应具有访问权限的每个角色。
  3. 写/查找 role provider支持层次结构 - 如果用户处于更高级别的角色,则只需返回 true 即可。

关于asp.net-mvc - 如何使用 activedirectorymembershipprovider 在 asp.net mvc 应用程序中实现角色层次结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/756299/

相关文章:

c# - 如何从 ApiController 中的 StringContent 对象读取 JSON?

c# - 如何找到asp :Login LoginError error type

asp.net-mvc - 使用 PagedList 和成员资格

c# - 是否可以使用 MVC 项目制作单独的 dll?

javascript - MVC 4 将值从 Javascript 传递到 Controller

sql - LDAP 建模最佳实践

java - 使用Java更改AD密码

c# - asp.net 如何准确地告诉用户登录失败的原因

javascript - 将宽度设置为百分比但均匀渲染 div

c# - 如何在 Active Directory C# 中的指定 ou 下面列出 ous(组织单位)