我正在创建一个使用EF Code First方法的项目,现在我必须创建用户。我想实现OpenID,因为它非常酷而且很现代。有很多关于如何做到这一点的教程(没有阅读它们,但我当然会这样做)。
我现在非常习惯于EF和MVC,但所有与成员,角色,提供者等有关的东西都是模糊的。我确定有两件事:
所以如果有人能给我一些提示,我将不胜感激:
我知道这是非常广泛的主题,但我只需要基本的提示,我需要知道从哪里开始。像“你可以使用MembershipProvider和OpenID,但你最好不要,因为......”。
非常感谢任何帮助。
答案 0 :(得分:4)
要求是用户能够使用facebook,yahoo登录 和其他人一样,因为到处创建帐户非常烦人。
我们正在考虑为我们的用户提供多个身份验证选项,无论是您管理的用户名和密码组合,OpenId提供商还是OAuth提供商。
我发现最好的方法是明确这两个概念(成员资格和身份验证)。
我并不在乎,用户如何验证,只是提供我 可以找到他们的用户信息。
使用包含以下信息的User表的简单方法:
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。
我很久以前写过this post(在电子商务商店的背景下)可能会有所帮助。