【问题标题】:How do I authenticate against my ASPNET users and roles stored in my database?如何对存储在数据库中的 ASPNET 用户和角色进行身份验证?
【发布时间】:2016-06-24 17:12:10
【问题描述】:

我有一个 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 的成员。这是什么原因?

【问题讨论】:

    标签: asp.net-mvc asp.net-identity asp.net-roles


    【解决方案1】:

    您同时混合了身份、ASP.NET 成员身份和 Windows 身份验证,所有这些在本质上相互不兼容。如果您使用的是身份,则角色提供者等都在窗外。这都是 ASP.NET Membership 的一部分,它被 Identity 所取代。 Windows Auth 也是一个完全不同的野兽,它不适用于 Identity 或 ASP.NET Membership 提供的个人身份验证。

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

    【讨论】:

    • 克里斯,我正在通过 LDAP 进行身份验证。我正在通过 AD 凭据登录我的应用程序,它可以查看用户名和密码是否有效。我的登录部分正在使用身份。我认为我的角色提供者设置错误。然而,这是我第一次尝试这样的事情,而且我对 MVC 还很陌生。
    • 我可以保证您的角色提供者设置错误,因为 Identity 不使用角色提供者。
    • ok...当我从 webconfig 中删除字符串时,如何让应用程序使用数据库中的角色进行身份验证?
    • 最初我在 web.config 中没有角色提供者,但我的登录部分没有看到我的登录用户在管理员组中
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-05-30
    • 2015-04-06
    • 2018-02-12
    • 1970-01-01
    • 2018-06-20
    • 2018-05-25
    • 1970-01-01
    相关资源
    最近更新 更多