2012-10-22 52 views
2

我正在創建需要Windows身份驗證的Intranet網站。我已經設置了一切,或者我認爲我確實使用了在數據庫中管理的Windows身份驗證和角色。這很重要,因爲我無法使用Active Directory組和角色。ASP.net使用自定義數據庫的Windows身份驗證

它的工作原理。當我進入網站時,它會顯示我的Windows用戶名,並可通過User.Identity.Name訪問。我可以使用User.IsInRole("roleName")驗證角色,它也可以工作。

現在我遇到的問題是,當我使用Membership.GetUserMembership.GetAllUsers我總是得到空和一個空的集合。

我RoleManager提供商是:

<add 
name="SqlRoleManager" 
type="System.Web.Security.SqlRoleProvider" 
connectionStringName="ApplicationServices" 
applicationName="/appName" 
/> 

我的成員資格提供這樣一個:

<add 
name="AspNetSqlMembershipProvider" 
type="System.Web.Security.SqlMembershipProvider" 
connectionStringName="ApplicationServices" 
applicationName="/appName" 
/> 

我缺少的東西或我的配置是錯誤的? 謝謝!

+0

您是否設置了默認的成員資格提供者? –

+0

我相信有一個/太多內部應用程序名稱 –

+0

檢查此鏈接的更多詳細信息:http://msdn.microsoft.com/en-us/library/system.web.security.sqlmembershipprovider.aspx –

回答

2

爲什麼你想打電話給Membership.GetUser?您已通過Windows身份驗證進行身份驗證。如果你想使用Windows身份驗證的成員資格(爲什麼,我不知道),你必須跳過一些更多的籃球。

您可以使用ActiveDirectoryMembershipProvider而不是SqlMembershipProvider。這使您可以調用GetUser並檢索AD信息。

您可以在登錄時將Windows身份驗證信息複製到SqlMembership數據庫中。

您可以創建一個自定義成員資格提供程序,允許您自己執行所有身份驗證。

因此,第一個問題是您爲什麼要使用Membership?

+0

嗨,謝謝你的回答。 我不使用ActiveDirectoryMembershipProvider,因爲據我所知,它是使用Active Directory組,我不需要,我不能修改。 關於使用成員資格我知道我已經設法使用Windows身份驗證登錄,但我想使用'Membership.GetUser'來獲取當前用戶的UserId,我不能用'User.Identity'或IPrincipal來完成。現在,我使用用戶名對UserId進行額外的查詢,但它看起來不正確,因爲Membership應該會幫助這些方法。 – Sheol

+0

複製Windows身份驗證意味着什麼。信息進入數據庫? 關於創建自定義會員資格...以及我不知道如何創建一個新的,仍然使用Windows身份驗證。我的意思是隻顯示當前的Windows用戶而不詢問任何密碼也不必管理它。 – Sheol

+0

@Sheol - 編號ActiveDirectoryMembershipProvider僅關於認證。您使用WindowsTokenRoleProvider從AD提供AD組。如果你使用SqlRoleProvider和ActiveDirectoryMembershipProvider,那麼它會做你想做的。 –

相關問題