1
RoCry 2012-07-28 00:06:03 +08:00
我们现在这块也搞得挺麻烦的...
|
2
uarethefuture 2012-07-29 22:47:24 +08:00
学习。。
|
3
loo2k 2012-07-29 22:55:48 +08:00
目前我做的方法:
1. 新建一个第三方登录的表,用来保存第三方登录的用户信息,并和现有的用户表映射; 2. 第三方登录后绑定或者新建一个帐号(原有用户表); 3. 用户使用第三方登录时在 SESSION 中保存第三方名称(区别来源); 4. 第三方登录后从第三方登录表找到映射的用户,使用原来的登录方法; 只是大概的思路,没写具体细节。 |
4
Mutoo 2012-07-31 00:16:20 +08:00
@loo2k 那样的话从不同的第三方登录,即使是同一个人也变成不同的帐号了。比如我用人人和QQ分别登陆,那就是人人一个帐号,QQ另一个帐号。有办法统一吗?
|
5
willwen 2012-07-31 08:37:40 +08:00
@loo2k 的方法很好,值得学习。
在Node.js中,有两个第三方模块是有这种功能的,分别是everyauth和淘宝苏千的node-weibo(未更新) http://everyauth.com/ https://github.com/fengmk2/node-weibo |
6
coosir 2012-07-31 10:37:14 +08:00
第三方的专门用一个表保存,可以映射到自己的用户表。
一种方法是只允许用户进行绑定,这样的话原账号可以映射多个第三方账号。(用户在用不同的第三方账号连接的时候可能会不小心额外新建账户,所以只允许绑定的方式是比较简单的,不过对新用户的体验不是很好。) 如果允许用户通过第三方账号直接登录,提供解绑和增加绑定功能即可。(万一用户之前用微博登录过,之后又用QQ登录新建了账户,那可以解除QQ绑定再增加绑定到原账户上。不过这个需要用户自己去发现。) 仅供参考 |
7
chloerei 2012-07-31 10:52:05 +08:00
本地网站帐号和第三方认证帐号是一对多关系,用第三方登录的时候实际登录的是本地网站帐号
|
8
ayang23 2012-07-31 10:57:56 +08:00
这个东西用mongo很好解决
user = { "uid": uid, "email": email, "name": name, "created_time": datetime.utcnow(), "last_accessed_time": datetime.utcnow(), "accounts": { "local":{"username":"ddd","password":"dddddd"}, "google":{"email":"daflskj"}, ......... }, } |
9
yudun1989 2012-07-31 11:20:36 +08:00
@Mutoo 其实现在我们这边正在做。最好的方法就是比如传统邮箱注册和新浪微博等社会化账号平级,用户可以对新浪微博等取消取消绑定,也可以对邮箱取消绑定。
对于人人和QQ分别登陆的问题,就看你想怎么弄了。这个问题没法避免,目前有的网站是有"销毁账号的功能" ,比如蘑菇街。 |
10
loo2k 2012-07-31 13:05:17 +08:00
@Mutoo 不是,是即使用不同的帐号登录,最后都指向系统原有用户表的一个指定用户。
因为在使用第三方登录后,必须绑定或者新建一个原系统的用户。 第三方登录后根据第三方登录表上的映射,获取原系统用户表里的用户信息。 |
12
ayang23 2012-07-31 14:34:12 +08:00
绑定。你研究一下stackoverflow的登录和绑定系统,他把stackexchange账户也看做是等同于google/facebook等第三方的openid。
|
14
barbery 2012-10-30 11:47:41 +08:00
刚好最近在做,说说我的看法。。。
自己的用户表 $user={ 'id'=>primary key 自增 'email' 'password' } 第三方绑定表 $user_open = { 'user_id' => primary key 指向$user表id 'key' => 第三方登陆用户唯一标示符 'token' => 授权码 'from' => 来源标识 } 我的处理逻辑是:第三方账户登陆过来,先到$user_open 找下key,不存在,则当成新用户处理,新插入一个$user表,拿到user_id 插入$user_open 表。如果用户是已经存在账号的,可以输入他的账号,然后把$user_open 的user_id 更新下。。。 不过这样就存在一个问题,绑定的话,要合并信息是个问题。。。不过应该不会有用户来你网站用了微博登陆玩了1年,然后又用QQ登陆玩了1年,然后再把2个账号给绑定吧。。。 |
15
ianluo 2012-10-30 13:42:46 +08:00
我觉得给每个第三方的登陆新建一个用户比较自然一些。因为如果用户用了既然绑定了大多数是知道用哪个账号登陆的,如果还了账号登录多数情况下是因为想换一个登陆账号,这和新建一个账号差不多吧。对于绝大多数用户来说应该是最好理解的。
|
16
AlloVince 2012-10-30 13:49:13 +08:00
|
17
ivydom 2019-10-10 16:31:00 +08:00
用 authing.cn 身份云
|