我应该为ASP .NET MVC应用程序使用内置成员资格提供程序吗?

到目前为止,我一直在使用自定义成员资格提供程序进行身份validation。 我即将开始使用MVC开发我的第一个网站。 我想知道我是否应该使用ASP .NET MVC附带的内置成员资格提供程序,或者我是否应该创建自己的。 我的网站需要与openid,facebook,google等集成进行身份validation和api访问的openauth。 我想知道根据我的需要使用内置的那么容易。

就个人而言,我讨厌使用核心框架中可用的ASP.NET Membership provider …… 当它持久存在于SQL SERVER数据库中时 。 所有表格和视图对于单个网站来说都是一种过度杀伤力。 对于托管公司? ..也许……但是对于我所做的所有企业网站来说……这是一种过度杀伤和麻烦。 至于实际的提供者界面等…它非常好..但仍然非常硬核等等。对于简单中型网站,IMO来说是一种过度杀伤力。

所以个人而言,我会使用一些简单的自定义代码来处理大多数基本媒体网站的成员资格持久性。

然后,这将转向您的第二个问题:OpenId。 使用安德鲁·阿诺特的DotNetOpenAuth .NET框架 – >它通常是Kicks Serious Ass(tm)。 使用它与将用户成员资格数据保存到存储库的方式无关。 IE浏览器。 如果您继续使用Sql Server + ASP.NET成员资格提供程序,您仍然可以(并且应该)使用DotNetOpenAuth。 如果您有一种简单的自定义方式将用户详细信息保存到数据库(这就是我所做的),您仍然可以使用DotNetOpenAuth – 两者相互独立。

所以,IMO,不要使用过于复杂的ASP.NET Membership + Sql Server的东西,而是使用一两个简单的表来保存自己的用户详细信息。 接下来,你必须使用DotNetOpenAuth来处理任何OpenId(StackOverflow使用DotNetOpenAuth来处理他们的OpenId登录)。

祝好运 :)

(我确信我的ASP.NET成员资格提供程序+ Sql Server的操作可以保留这些信息,这会让一些人产生书呆子,这里)。

如果你不得不问,你不应该写自己的提供者。 做好安全工作真的很难 。 做错了非常容易。

但好消息是,你想要的东西是非常普遍的,并且有经过测试的现成工具已经可以实现。 一个例子是Janrain 。 还有其他人。 尽可能使用现有的,经过validation的工具。

看看NerdDinner发生了什么。 他们最近(6个月前)与OpenID集成,谷歌,雅虎作为特色提供商。 他们仍然允许所有“原生”登录。 以下是允许用户以不同方式进行身份validation的站点示例。

如果你可以镜像他们的一些function,你就可以在Facebook,OpenAuth等上滚动。最大的好处是它已经在ASP.NET MVC中实现了,你只需要借用一些实现。

这是一个选项和我成功使用的选项。

您基本上只有一个用户可以通过多种方式进行身份validation。

使用内置的提供程序,您当然可以随时切换,但这并不妨碍您以多种方式对该用户进行身份validation。

当用户使用OpenID进行身份validation时,Facebook等将该登录名与将特定登录方法和身份与表单标识匹配的表进行匹配,并将用户设置为使用其规范的成员身份用户名登录。

如果新用户对您的站点进行身份validation并且没有帐户,则只需在成员资格提供程序中自动创建一个帐户。 将密码设置为一些随机垃圾,因为它们永远不会使用它。 让他们继续将多种登录类型与它相关联。

如果用户希望直接登录,则只需使用标准的成员资格提供程序密码重置机制,并为其提供一个。

长话短说:现在使用内置机制。 它并不能阻止你做你想做的事。

最近推出的SimpleMembershipProvider解决了旧的asp.net成员资格的许多问题。 即易于使用和控制用户表模式。 这应该是任何新应用程序的起点(截至2012年11月)。

请参阅以下链接,了解SimpleMembershipProvider的入门知识以及asp.net会员资格的良好历史记录。

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-净-MVC -4- templates.aspx