【发布时间】:2011-09-21 11:19:16
【问题描述】:
如果我要运行允许用户通过“本地”用户名/密码组合以及任意数量的 OAuth 服务进行身份验证的服务 - 用户数据模型会是什么样子?
通常,如果我自己处理所有登录,在“用户”数据库(假设 MySQL)中,用户名和密码字段将被要求为非空。但是,如果我的用户只是想使用 Facebook 登录,我只需存储 Facebook 自动令牌,并且在本地没有任何用户名/密码。
此外,如果他们想使用 Twitter 凭据登录,然后使用 tumblr 登录,然后使用任何日常服务怎么办?我可以为每种类型保留一个字段,但这可能有点笨拙。由于缺少更好的术语,我最好保留另一个“身份验证方法”表,这样我就可以在用户之间建立一对多的关系以及如何对他们进行身份验证?
基本上,我想问是否有人知道这种情况下的行业标准最佳实践,或者可以为我指出正确的方向(或者是否有人实施了适合他们的类似方法)。一个用户,多种身份验证方法 - 保存该信息的最佳方式是什么?
如果我所做的任何假设是无效的,我很抱歉,请纠正我。
【问题讨论】:
-
就我个人而言,我不想处理超过一两个身份验证方案 - 尝试接受任何和一切都将成为一场噩梦。如果您的应用程序与 FB 的关系更密切,则允许使用 FB 等。话虽这么说......只谈论 OAuth + 本地,我认为您会在您的用户类上实现一个方法,比如 oauthenticated? (我是一个红宝石人),这会告诉你他们最初是本地认证的还是 o 认证的。然后在您的身份验证代码中,您需要根据他们用来让他们登录的方法进行检查和分支。之后,它应该没关系。
标签: mysql facebook twitter-oauth oauth-2.0