自定义成员资格提供者MVC 4

时间:2012-10-26 08:48:22

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

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

AccountController.Login方法抛出此异常:

  

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

禁用enableSimpleMembershipautoFormsAuthentication(根据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 = falseautoFormsAuthentication = falseappSettings以及system.web

  • 中添加会员提供商
  • 在调试中启动网站,然后单击页面上的“登录”

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

我得到例外:

  

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

有什么想法吗?

1 个答案:

答案 0 :(得分:2)

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

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

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

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

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