假设我有一个获取用户数据的用户表。我有2个案例,人们可以注册我的网站。
案例1.人们只是输入注册我的站点所需的所有信息。(传统的经典方式)
案例2.我设置了OAuth,人们可以使用推特或其他身份验证系统(提供OAuth应用程序接口)登录到我的站点。因此,这些用户实际上不会输入他们的
我应该如何在我的站点中存储通过案例2登录的用户?我是否只是将他们的信息(我将使用OAuth API获取)存储为他们的用户ID,并将令牌存储为他们的密码?或者我必须让他们使用所提供的信息再次注册?
管理案例1和案例2的最佳方法是什么?谁能告诉我他们自己在这方面的经验?
发布于 2011-03-02 14:14:46
我们在我们的网站上做到这一点的方式是将User的概念和它们的Authentication分开。用户可以拥有任意数量的身份验证,存储在单独的表中。他们可以使用任何一种关联的身份验证来登录。因此,我们可能会有以下内容:
User:
id: 1
username: brandon_tilley
Authentication:
id: 1
user_id: 1
type: password
data: {"password": "super-secret"}
Authentication:
id: 2
user_id: 1
type: oauth2
data: {"token": "0123456789abcdef", "oauth_id": "543210"}现在,当有人尝试使用用户名和密码登录到您的站点时,您可以使用password类型和与用户名匹配的user_id来查找相应的Authentication记录;如果有人尝试通过OAuth2登录,您可以查看数据库中是否存在具有关联的token和oauth_id的Authentication,如果存在,则登录关联的用户。
发布于 2011-03-02 23:02:02
这是一个有趣的问答,也是我一直在思考的事情,因为这是我想在我的CMS上进行的下一个升级。
所以我明白你的意思:
当有人尝试登录时:
根据"users“表检查他们的用户名,然后检查他们在"authentications”表中使用的身份验证类型。
如果这只是一个存储的密码,他们只有一个普通的帐户-登录他们。
如果他们是使用OAuth等存储的,tr使用存储的信息将他们远程登录到他们选择的服务-如果成功,就登录他们。
https://stackoverflow.com/questions/5164012
复制相似问题