使用自定义数据库的 ASP.net Windows 身份验证

标签 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" 
/>

我的成员(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/

相关文章:

asp.net - asp.net 页面中如何有 Html 实体?

asp.net - 如何获得基于角色的用户?

asp.net-mvc-3 - 从 MVC3 中的 User.Identity.Name 中删除域

c# - 如何在点击时交换图像?

c# - iTextSharp 国际文本

asp.net - 为什么底层成员(member)资格提供商应该决定是否……?

c# - 使用 ASP.NET 成员身份提供程序(没有登录逻辑?)

iis - 身份服务器 4 Windows 身份验证

asp.net - 如何通过窗口身份验证获取电子邮件地址

asp.net - 在 IIS Express 的 web.config 中添加 MIME 映射