我正在创建一个需要 Windows 身份验证的 Intranet 网站。我已经设置了一切,或者我想我已经设置好了,以使用 Windows 身份验证和在数据库中管理的角色。这很重要,因为我无法使用 Active Directory 组和角色。
它有效。当我进入该网站时,它会显示我的 Windows 用户名,并且可以通过 User.Identity.Name
进行访问。我可以使用 User.IsInRole("roleName")
验证角色,它也有效。
现在我遇到的问题是,当我使用 Membership.GetUser
和 Membership.GetAllUsers
时,我总是得到 null 和空集合。
我的 RoleManager 提供程序是:
<add
name="SqlRoleManager"
type="System.Web.Security.SqlRoleProvider"
connectionStringName="ApplicationServices"
applicationName="/appName"
/>
我的成员(member)提供商是这样的:
<add
name="AspNetSqlMembershipProvider"
type="System.Web.Security.SqlMembershipProvider"
connectionStringName="ApplicationServices"
applicationName="/appName"
/>
我是否遗漏了什么或者我的配置错误? 谢谢!
最佳答案
为什么要调用Membership.GetUser?您已通过 Windows 身份验证进行身份验证。如果您想通过 Windows 身份验证使用成员(member)资格(为什么,我不知道),您必须跳过更多的障碍。
您可以使用 ActiveDirectoryMembershipProvider,而不是 SqlMembershipProvider。这使您可以调用 GetUser 并检索 AD 信息。
您可以在登录时将 Windows 身份验证信息复制到 SqlMembership 数据库中。
您可以创建一个自定义成员(member)资格提供程序,允许您自己完成所有身份验证。
那么,第一个问题是你为什么要使用成员(member)资格?
关于使用自定义数据库的 ASP.net Windows 身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13014782/