Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby 使用OAuth时的用户模型设计_Ruby_Oauth_Mongomapper - Fatal编程技术网

Ruby 使用OAuth时的用户模型设计

Ruby 使用OAuth时的用户模型设计,ruby,oauth,mongomapper,Ruby,Oauth,Mongomapper,我目前正在构建一个web应用程序(我的第一个),并希望包括OAuth功能,以便用户可以通过twitter和facebook登录。我正在西纳特拉建造它,并且已经看过OmniAuth gem,它似乎正适合这项工作。我遇到的问题是重新设计用户模型 目前,我有常用的名字、姓氏、用户名、电子邮件和密码,用户名是唯一的,这样我就可以使用它作为ID,像twitter一样,我可以键入www.myapp.com/username来查找该用户的信息。我决定,对于最初的版本,我将使用twitter作为登录,然后是fa

我目前正在构建一个web应用程序(我的第一个),并希望包括OAuth功能,以便用户可以通过twitter和facebook登录。我正在西纳特拉建造它,并且已经看过OmniAuth gem,它似乎正适合这项工作。我遇到的问题是重新设计用户模型

目前,我有常用的名字、姓氏、用户名、电子邮件和密码,用户名是唯一的,这样我就可以使用它作为ID,像twitter一样,我可以键入www.myapp.com/username来查找该用户的信息。我决定,对于最初的版本,我将使用twitter作为登录,然后是facebook,最后是通常的注册。我的问题是,人们在facebook上的用户名很可能与在twitter上的用户名相同。因此,例如,如果我使用twitter登录,并使用“新用户”ID,那么当来自facebook的具有相同用户名的人试图加入时,这将是一个问题

OmniAuth gem通过提供用户信息的散列来工作。我将使用Mongo,因此我可以在用户模型中包含twitter和facebook字段,并保留哈希值。我只是有点困惑,当两个服务很可能都有相同用户名的用户,或者一旦实现了常规登录,如何创建唯一ID,有人可以注册并使用已经在twitter或facebook上使用的用户名,从而阻止这些人注册他们的twitter/facebook帐户


我真的很想知道其他人是如何做到这一点的

我只对身份验证密钥使用一个表,它意味着:user_id、:provider、:key列和一个单独的用户表、:email、:昵称、


例如,如果用户使用他的Twitter帐户登录、注销,然后使用Google Acc登录,那么您将拥有两个不同的帐户,并且没有解决方案将任何帐户与现有帐户相关联。我建议您允许登录用户将其当前使用的用户帐户链接到另一个身份验证提供商(您应该将用户与身份验证分离,并且在第一次登录后,他应该能够将更多身份验证密钥链接到其用户帐户)。他登录到他的主要用户帐户(例如,使用twitter)并通过单击auth页面上的Google图标将他的用户帐户链接到他的Google帐户。

我只对auth密钥使用一个表,它意味着:user_id,:provider,:key columns和一个单独的用户表,:email,:昵称


例如,如果用户使用他的Twitter帐户登录、注销,然后使用Google Acc登录,那么您将拥有两个不同的帐户,并且没有解决方案将任何帐户与现有帐户相关联。我建议您允许登录用户将其当前使用的用户帐户链接到另一个身份验证提供商(您应该将用户与身份验证分离,并且在第一次登录后,他应该能够将更多身份验证密钥链接到其用户帐户)。他登录到他的主要用户帐户(例如,使用twitter)并将他的用户帐户链接到他的Google帐户,单击auth页面上的Google图标。

再次,他应该进行更多的搜索。这是一篇关于分离用户和授权的有趣文章。再一次,我们应该做更多的搜索。这是一篇关于分离用户和授权的有趣文章。谢谢Nucc。一个用户拥有两个独立帐户的问题是我所关心的。我想只要“连接另一个帐户”选项被清楚地标记,这是可以避免的。谢谢Nucc。一个用户拥有两个独立帐户的问题是我所关心的。我想,只要“连接另一个帐户”选项被明确标记,就可以避免这种情况。