能介绍一下sf的第三方账号绑定、登录结合本地用户数据库的结构设计么?

Viewed 16385

在系统中账户、用户和登录认证的检查在数据存储层的结构是如何设计的呢,以及随后的认证和绑定(解除)的流程在设计中是如何解决的?

6 Answers

我们的设计非常简单,用了另外一个表专门来存放与第三方帐户的绑定,其实这个表的核心字段就是两个,一个是我们网站的用户id,一个是用户在第三方网站的id

这样用户在用第三方帐号登录时,我们用oauth接口取到用户在第三方网站上的id,然后再从这个表中检索,这个id是否对应有我们网站的id。

如果有,那么就登录这个id的用户。

如果没有,那么为它注册一个新用户,并在绑定表中生成一条绑定纪录,以便下次登录查询。

用户要解除绑定就只需要把绑定纪录从绑定表中删除就行了。

那也就是设计上只支持oauth一种第三方协议,openid并不考虑进去是么?

@阿熊 是的,我们并没有考虑openid

如果我通过新浪微博登录,没有设置密码,然后解除绑定,那个账号是不是永远无法登录了?

看了下,SF 这方面做得的确很干净简洁。
如果用户第三方登录的话,设置密码时不需要填写当前密码。设置密码之后,应该可以照常邮箱、密码登录。
学习了。

第三方的id应该不是id吧,是不是对应每一个第三方用户生成的一个特殊的标示字符串?

的确是,以Facebook为例,一般同一个user对不同的第三方分发的id是不一样的

如果用户先注册了帐号,然后再用第三方登录,那怎么绑定呢?

如果用户先注册了帐号,然后再用第三方登录,那怎么绑定呢?

非常感谢!我一直没有思路刚刚看了2楼的回答让我顿然矛盾涉开。谢谢!