【问题标题】:Custom Membership Provider MVC 4自定义成员资格提供程序 MVC 4
【发布时间】:2012-10-26 08:48:21
【问题描述】:

我在 VS2012 中创建了一个新的 MVC 4 项目,现在尝试使用我创建的自定义成员资格提供程序时遇到问题,它继承自 MembershipProvider。

AccountController.Login 方法抛出此异常:

要调用此方法,“Membership.Provider”属性必须是“ExtendedMembershipProvider”的实例。

禁用enableSimpleMembership 和autoFormsAuthentication(如asp.net 4.5 custom membership provider configuration throws strange exception 所建议的那样)没有区别。

删除WebMatrix.WebData.dll,导致AccountController 无法编译,因为它引用了WebMatrix.WebData.WebSecurity

这些是我采取的步骤:

  • 在 VS 2012 中创建一个新的 APS.NET MVC 4 项目 (.net 4.0)

  • 添加一个名为 CustomMembershipProvider 的新类,它实现了 MembershipProvider

  • 在web.config 中设置enableSimpleMembership = false 和autoFormsAuthentication = false 在appSettings 中并在system.web 中添加成员资格提供程序

  • 在调试中启动网站并点击页面上的“登录”

  • 输入用户名和密码的任何旧文本

我得到了例外:

要调用此方法,“Membership.Provider”属性必须是“ExtendedMembershipProvider”的实例

有什么想法吗?

【问题讨论】:

    标签: asp.net-mvc-4 membership-provider


    【解决方案1】:

    我按照您的步骤使用 VS.Net 2010,并且能够重现异常。

    如异常所示,这可以通过实现 ExtendedMembershipProvider 而不是 MembershipProvider 来解决。

    ExtendedMembershipProvider 位于程序集 WebMatrix.WebData.dll 和命名空间 WebMatrix.WebData 中。它定义了比 MembershipProvider 更多的抽象方法和属性,例如 GeneratePasswordResetToken 和 GetLastPasswordFailureDate,您需要实现所有这些。

    首先,您可以简单地从 : ExtendedMembershipProvider 的上下文菜单中使用实施抽象类,看看它是否适合您,就像它对我一样。

    如果您从重现步骤开始,将 ValidateUser 的正文替换为 return true; 将允许您使用任何用户名和密码成功登录。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-08-23
      • 2013-01-30
      相关资源
      最近更新 更多