asp.net mvc-如何针对存储在数据库中的ASPNET用户和角色进行身份验证



我有一个MVC项目,它允许我的用户将用户和角色添加到AspNetRolesAspNetUsers表中。应用程序使用Active Directory对登录视图中的用户进行身份验证。在我的数据库中,我已将用户user123添加到数据库中Administrators的角色中。我添加了以下逻辑,使该链接对登录部分中的Administrators角色可见。

@if (Roles.IsUserInRole("Administrators"))
{
    @Html.ActionLink("Manage Accounts", "Index", "Roles")
}

我还将其添加到web.config中,试图实例化与数据库的角色提供程序连接。

<roleManager enabled="true">
  <providers>
    <clear />
    <add connectionStringName="DefaultConnection"
         name="AspNetSqlRoleProvider"
         type="System.Web.Security.SqlRoleProvider"
         applicationName="MyApplicationName" />
  </providers>
</roleManager>

然而,user123仍然看不到我的链接,根据我的数据库,他是Administrators的成员。这是什么原因造成的?

您同时混合了Identity、ASP.NET Membership和Windows Auth,所有这些都天生不兼容。如果您使用的是Identity,那么角色提供程序等就不在窗口中了。这都是ASP.NET Membership的一部分,它已被Identity取代。Windows Auth也是一个完全不同的野兽,它不适用于Identity或ASP.NET Membership提供的个人身份验证。

如果您想使用自己的身份验证系统,并且您想通过AD进行身份验证,则不能使用Windows身份验证。相反,您必须通过LDAP手动连接到您的AD,并根据它运行授权。您仍然需要系统中由Identity提供的实际用户记录(因为任何人都不应该再使用ASP.NET Membership(,但您不会使用Identity来实际验证用户/密码组合。相反,您可以通过LDAP来完成此操作,然后只需在Identity端为用户登录即可。

相关内容

  • 没有找到相关文章

最新更新