【问题标题】:Web App Active Directory User Roles vs User.IsInRoleWeb App Active Directory 用户角色与 User.IsInRole
【发布时间】:2011-11-24 19:31:29
【问题描述】:

我需要一些建议。 我正在扩展一个 Web 应用程序以与 AD 成员角色集成,并且不太确定我是否可以依靠 User.IsInRole 来获得成员角色信息。最初的测试表明确实如此,但是使用它和编写一个类以返回用户角色与 DirectorySearcher/AccountManagement 之间有什么区别?

一种解决方案比另一种更好吗?

在我看来,它在这种情况下实现了同样的效果。我说的对吗?

谢谢。

【问题讨论】:

    标签: c# .net active-directory


    【解决方案1】:

    如果您使用活动目录授权,Users.IsInRole 检查用户是否是给定组的成员。这与检查用户所属的组并不完全相同,因为这只会提供 direct 成员资格。 Users.IsInRole 还检查嵌套组成员身份。一个例子:

    • UserAGroupA 的成员
    • GroupAGroupB 的成员

    现在,如果您查看UserA 的直接会员资格,您将只会得到GroupA。但是Users.IsInRole 将表明UserAGroupB 的成员,这要归功于嵌套。

    【讨论】:

    • 我明白你在说什么... 有道理且有效,这取决于我想我的要求。 Users.IsInRole
    • 经过更多调查后,我还在考虑使用 PrinciplePermission 和 Demand 来保护方法的功能。感谢您提供的重要信息。
    • 使用PrinciplePermissionPrincipalPermissionAttribute 是控制访问的最简单方法。它也完全独立于底层身份提供者,因此您的代码将适用于 Windows 帐户和例如一个 ASP.Net 会员提供者。
    • 实际上,使用新的System.DirectoryServices.AccountManagement 命名空间(read excellent article 了解更多信息),调用UserPrincipal.GetGroups()返回用户的任何嵌套成员身份跨度>
    【解决方案2】:

    只需使用 Users.IsInRole。不要让自己变得更难。这就是它的用途。

    【讨论】:

    • IsInRole 不处理角色名称中的空格。即“测试组”
    猜你喜欢
    • 2017-02-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-16
    相关资源
    最近更新 更多