【问题标题】:ASP.NET Membership Provider in MVC 5MVC 5 中的 ASP.NET 成员资格提供程序
【发布时间】:2016-01-26 10:30:27
【问题描述】:

我有一个正在 ASP.NET MVC 5 中工作的项目,但它需要使用 ASP.NET Membership(而不是 Identity)。

我找不到太多关于如何完成这项工作的材料。我运行了 aspnet_regsql,它在我正在使用的数据库中创建了所有必要的表。当我使用 DB-first 时,我用这些表更新了 MVC 应用程序中的模型。所以需要的表就在那里。

接下来我应该做什么?

【问题讨论】:

    标签: c# asp.net .net asp.net-mvc asp.net-membership


    【解决方案1】:

    您需要确定所需的成员资格提供程序并在 Web.Config 中进行配置。

    因此,假设我们使用 MS SQL Server 和 SQL Membership Provider,您将需要类似于 Web.Config 的 system.web 部分中的以下示例:

    <membership defaultProvider="MembershipProvider" userIsOnlineTimeWindow="15">
      <providers>
        <clear />
        <add name="MembershipProvider" 
              type="System.Web.Security.SqlMembershipProvider"  
              connectionStringName="SqlConnection" 
              applicationName="MyApplication" 
              enablePasswordRetrieval="false" 
              enablePasswordReset="true" 
              requiresQuestionAndAnswer="false" 
              requiresUniqueEmail="true" 
              passwordFormat="Hashed" 
              minRequiredNonalphanumericCharacters="0"  />
      </providers>
    </membership>
    

    您需要确保所有设置都符合您的要求,特别是您需要确保在 Web.Config 中声明的连接字符串与为 connectionStringName 属性指定的名称相同。该连接字符串必须有权访问和指向您使用 aspnet_regsql 创建的数据库表。

    从这里开始,它应该只是使用 System.Web.Security 命名空间中的 Membership 类的一个例子。例如,控制器操作中使用的以下代码应该获取当前登录的用户:

    MembershipUser user = Membership.GetUser();
    

    【讨论】:

    • 感谢 Xefan。我做的另一件事是我需要修复查询字符串。更改它,使其不特定于 EntityFramework(因为它是)并使其使用 providerName="System.Data.SqlClient"。
    猜你喜欢
    • 1970-01-01
    • 2011-01-29
    • 1970-01-01
    • 1970-01-01
    • 2013-08-19
    • 1970-01-01
    • 1970-01-01
    • 2010-11-15
    • 2011-11-13
    相关资源
    最近更新 更多