我习惯于覆盖MembershipProvider,但是如何使用新的SimpleMembership?
我看到有一个SimpleMembershipProvider,所以我想我应该覆盖它,但我不知道这些方法是仅仅存储数据目的,或者它们应该包含业务/验证逻辑)
配置如何?我知道InitializeDatabaseConnection方法通常负责初始化整个shebang,但如果我不使用Entity Framework,我不认为我应该调用它。
不幸的是,我没有找到很多关于新SimpleMembership的资源,除了两个不是非常有用的链接:
http://igambin.blogspot.ca/2012/08/simplemembershipprovider-huh.html
http://blog.osbornm.com/archive/2010/07/21/using-simplemembership-with-asp.net-webpages.aspx
解决方法
SimpleMembership是抽象类ExtendedMembershipProvider的一个实现。
SimpleMembership中的代码主要是sql操作和一些对底层的调用(在文档中称为“prevIoUs”)MembershipProvider。
我不认为它(在我的情况下)是重用SimpleMembership,因为它的实现主要是绑定到sql Server。相反,据了解,我应该实现ExtendedMembershipProvider。然后,通过在web.config文件中设置此实现,WebSecurity帮助器将绕过SimpleMembership(默认实现)并调用我的ExtendedMembershipProvider的实现。
我不认为我会这样做,因为它看起来比以前更复杂(更多的方法来实现)…但仍然可行。
然而,这一切都说,我有点失望,我们仍然需要与会员资格提供商(IMHO)进行合作,这是我们非常喜欢ASP的整个依赖注入的事情(很多静态和内部的东西)。 Net MVC / WebApi。
编辑1
但是我的答案保持有效,因为(从Jon Galloway的文章中)恢复:
Note that SimpleMembership still requires some flavor of sql Server – it won’t work with MysqL,Nosql databases,etc. You can take a look at the code in WebMatrix.WebData.dll using a tool like ILSpy if you’d like to see why – there are places where sql Server specific sql statements are being executed,especially when creating and initializing tables. It seems like you might be able to work with another database if you created the tables separately,but I haven’t tried it and it’s not supported at this point.