ASP.net Windows身份验证与自定义数据库

时间:2012-10-22 15:34:59

标签: asp.net asp.net-membership windows-authentication

我正在创建一个需要Windows身份验证的Intranet网站。我已经设置了所有内容,或者我认为我已经设置了使用Windows身份验证和在数据库中管理的角色。这很重要,因为我无法使用Active Directory组和角色。

有效。当我进入网站时,它显示我的Windows用户名,可通过User.Identity.Name访问。我可以使用User.IsInRole("roleName")验证角色,也可以。

现在我遇到的问题是,当我使用Membership.GetUserMembership.GetAllUsers时,我总是得到null和一个空集合。

我的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" 
/>

我错过了什么或者我的配置错了吗? 谢谢!

1 个答案:

答案 0 :(得分:2)

你为什么要打电话给Membership.GetUser?您已通过Windows身份验证进行身份验证。如果你想使用Windows身份验证的成员身份(为什么,我不知道),你必须跳过更多的箍。

您可以使用ActiveDirectoryMembershipProvider,而不是SqlMembershipProvider。这使您可以调用GetUser并检索AD信息。

您可以在登录时将Windows身份验证信息复制到SqlMembership数据库中。

您可以创建自定义成员资格提供程序,以便您自己进行所有身份验证。

所以,第一个问题是你为什么要使用会员资格?