簡體   English   中英

ASP.NET Active Directory角色提供程序

[英]ASP.NET Active Directory role provider

這是我第一次使用Active Directory中的ASP.NET角色成員身份。

到目前為止,我已經有一個網站正在運行,並且無法使用活動目錄用戶登錄。

我的問題是:我無法觸發“ Roles.IsUserInRole”。 就像它甚至沒有注意登錄用戶的組成員身份。

我一直在尋找解決方案,但是唯一可以找到的解決方案是編寫我自己的成員資格提供程序。 這真的必要嗎?

我想控制用戶可以使用其成員身份訪問的內容。 就像用戶位於AD的“學生”安全組中一樣,他們只能訪問ASP.NET解決方案中學生文件夾中的頁面。

我正在使用表單身份驗證。

這是我的角色管理器的Webconfig示例:

    <system.web>
  <roleManager defaultProvider="WindowsProvider"
               enabled="true"
               cacheRolesInCookie="false">
    <providers>
      <add
        name="WindowsProvider"
        type="System.Web.Security.WindowsTokenRoleProvider" />
    </providers>
  </roleManager>
</system.web>

在這里我正在嘗試IsUserInRole

        protected void Login2_LoggingIn(object sender, LoginCancelEventArgs e)
        {
            if (Roles.IsUserInRole("Students"))
            {
            Response.Redirect("../Students/StartPage.aspx");
            }
        }

獎勵問題:我只能通過廣告中“用戶”容器中的用戶登錄。 為什么我不能從某個級別的OU登錄用戶?

關於第一個問題,您是否已經嘗試過將組名和域名一起使用,例如Roles.IsUserInRole(@"DOMAIN\\groupName")

至於第二個問題。 我假設您使用ActiveDirectoryMembershipProvider 如果是這樣,我認為您的web.config中有一個連接字符串(供提供者使用),並且此連接字符串指定提供者應使用Users容器。 但是,您不必指定具體的容器(有關詳細信息,請參見本網站 )。 例如,代替:

LDAP://testdomain.test.com/CN=Users,DC=testdomain,DC=test,DC=com

您可以使用:

LDAP://testdomain.test.com

從您的描述中,您似乎正在使用帶有ActiveDirectoryMembershipProvider表單身份驗證進行身份驗證。

這與WindowsTokenRoleProvider不兼容。 要使用WindowsTokenRoleProvider ,它基於Windows組成員身份公開角色,您需要使用Windows身份驗證。

確保刪除:

 <authentication mode="Forms">....</authentication>

那么您也可以使用:

User.IsInRole("Students");

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM