MVC3、Entity Framework、OpenID和MembershipProvider

3
我正在创建一个使用EF Code First方法的项目,现在我需要创建用户。我想实现OpenID,因为它非常酷和现代化。有很多教程可以做到这一点(我还没有读过它们,但我当然会)。
我现在相当熟悉EF和MVC,但是所有与成员、角色、提供程序等相关的内容都很模糊。有两件事我是确定的:
- 我想使用OpenID - 我想使用EF Code First管理用户表
所以如果有人能给我一些提示,我会很感激:
- 我是否必须实现MembershipProvider,或者我可以使用像这样的项目:codeplex? - OpenID、EF和Membership如何协同工作?
我知道这是一个非常广泛的主题,但我只需要基本的提示,我需要知道从哪里开始。像“你可以使用MembershipProvider和OpenID,但最好不要,因为……”这样的东西。
非常感谢任何帮助。

2
请查看http://nerddinner.com教程,了解他们如何使用OpenID,代码在http://nerddinner.codeplex.com/。 - tvanfosson
我想要实现OpenID,因为它非常酷和现代化。我几乎无法想象有更奇怪的理由来使用任何技术或方法。除非你有特定的需求可以通过某种技术或方法得到满足,否则在使用它之前应该三思而后行。 - Ladislav Mrnka
1
要求是用户能够使用Facebook、Yahoo和其他方式进行登录,因为在各处创建账户非常繁琐。这将使我们的网站更加社交化和易于使用。从用户的角度来看,这个功能是现代和酷的——事实上,您可以开始做一些事情,而不需要通过注册流程的过程。此外,我们不是开发企业网站或内部网站,这需要适当的身份验证和授权。 - Unknown
1个回答

4
要求用户能够使用Facebook、Yahoo和其他账户登录,因为在每个网站都创建一个帐户非常繁琐。我们正在考虑为最终用户提供多种身份验证选项,无论是您管理的用户名和密码组合,还是OpenId提供程序或OAuth提供程序。我认为最好的方法是使这两个概念(会员资格和身份验证)明确化。我并不真的关心用户如何进行身份验证,只要他们进行身份验证时我可以找到他们的用户信息即可。一个简单的方法是有一个用户表,其中包含以下信息:
Name
Email
Authentication Type
Authentication Id

例子:

Name        Email       AuthenticationType      AuthenticationId
----        -------     ------------------      ----------------    
John        a@b.com     GoogleOpenId            OpenIdClaimId
Ben         c@d.com     Internal                ben
Dave        e@f.com     FacebookOAuth           FacebookUserId

当用户进行身份验证时,我们可以使用身份验证方法和ID作为标准来加载他们的用户信息。对于内部成员资格提供者,我们可以使用他们的用户名,对于OpenID,我们可以使用他们的声明URL,而对于OAuth,我们可以使用他们的提供商ID(例如Twitter ID)。
因此,尽管可以使用EF来管理您的用户,但我认为成员资格提供者只是另一种身份验证机制,这种情况下,您可能会使用标准的SqlMembershipProvider。
我很久以前写过这篇文章(针对电子商务店铺),可能会对您有所帮助。

1
谢谢您的回答。经过大量搜索,我找到了如何制作自定义实现的MembershipProvider,并成功完成了它。虽然不容易,但现在我真的为自己所做的感到骄傲。表格示例非常好,我采用了类似的方法(因为这可能是您能想到的最好的方法)。无论如何,我会将您的帖子标记为答案,因为它确实有所帮助。 - Unknown

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接