所以这是我在查看一些源代码(MVC4)后发现的。
http://aspnetwebstack.codeplex.com/SourceControl/changeset/view/553690ac9488#src%2fWebMatrix.WebData%2fExtendedMembershipProvider.cs
SimpleMembership 是抽象类 ExtendedMembershipProvider 的实现。SimpleMembership 中的代码主要是 SQL 操作和一些对底层(在文档中称为“previous”)MembershipProvider 的调用。
我认为重写 SimpleMembership 没有任何用处(在我的情况下),因为它的实现主要与 SQL Server 相关联。相反,据我了解,我应该实现 ExtendedMembershipProvider。然后,通过在 web.config 文件中设置此实现,WebSecurity 帮助程序将绕过 SimpleMembership(默认实现)并调用我的 ExtendedMembershipProvider 实现。
我认为我不会很快这样做,因为它看起来比以前更复杂(实现更多方法)......但仍然可行。
然而,所有这一切,我有点失望,我们仍然必须使用MembershipProvider,恕我直言,它与我们非常喜欢 ASP 的整个依赖注入东西相去甚远(很多静态和内部的东西)。网络 MVC/WebApi。
编辑 1
这个问题是在 Jon Galloway 写本教程之前提出的:
http ://weblogs.asp.net/jgalloway/archive/2012/08/29/simplemembership-membership-providers-universal-providers-and-the-new-asp-net -4-5-web-forms-and-asp-net-mvc-4-templates.aspx
但是我的回答仍然有效,因为这个(取自 Jon Galloway 文章)恢复了它:
请注意,SimpleMembership 仍然需要一些 SQL Server 风格 - 它不适用于 MySQL、NoSQL 数据库等。如果您想查看 WebMatrix.WebData.dll 中的代码,可以使用 ILSpy 等工具查看为什么 - 在某些地方执行 SQL Server 特定的 SQL 语句,尤其是在创建和初始化表时。如果您单独创建表,您似乎可以使用另一个数据库,但我还没有尝试过,目前不支持它。