表设计的疑问?

目前微信登录或者说第三方登录,是直接把 openid 和 unionid 作为新增字段加入到用户表中的,登录时直接拉起授权认证完成用户注册 + 登录,那么会出现一个问题。用户 web 端用手机注册了个账号,然后再用微信登录,那么此时这个用户在用户表中会有两条记录,一个是手机号 + 密码的记录,另一个是微信的 openid 的记录,对应两个不同的账号,并且不太好关联,目前没有关联字段,如果又用 QQ 登录、微博登录,那么这个用户就会产生一大堆的用户记录,每换一种登录方式都是另一个独立的账号,这样的表设计是否不太合理?是不是应该每一个第三方登录都应该新建一个表,以 user 表为主,比如给微信登录建一个微信表,用户依然是微信直接授权登录,但是可以通过绑定手机号的方式,与现有的 web 段的账号进行关联,以 user_id 字段为外键,关联之后,原本的微信获取的 nickname 等等直接废弃,以 user 表的信息为主,这样是不是可行的方案,只不过如果这样的话,其他很多接口估计都要改

《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
讨论数量: 4
Jourdon

其它只有一个 user 表一样可以做到,你需要的是有多个登录的方法,通过类型来判断是哪种登录就可以了,比如微信登录注册后需要去绑定手机号,通过手机号查找 user 表是否有记录,有就合并到一起,没有就新建一个手机号,如果是第二次登录,数据库有数据就不需要再判断了。

6年前 评论

系统支持 QQ、微博、微信等多个三方平台登录,两种选择:

  1. 每个平台登录后,都需要去绑定一个 user 账号,去绑定的时候可以注册或者直接登陆,(通常都是这种方案)这个时候需要用单独的一张表去存储第三方平台账号的信息,通过 user_id 然后去和 user 表的 id 进行关联。
  2. 如果每个平台登陆后去创建一个 user 账号,那么账号会很多,后续需要处理账号合并的问题。

这是目前多个第三方平台的情况。

但是目前在微信环境中,很多 H5 都只提供微信环境,所以在进入 H5 的时候就去自动那微信授权,拿到 openid,头像,昵称然后直接创建 user 账号,免除了用户主动去创建账号绑定第三方平台的流程。

6年前 评论

@shjchen
@Jourdon 恩,都是正解,第三方登录之后不能直接进入用户中心,必须要绑定用户手机号之后才能登录,我看了知乎的微信登录就是需要手机验证码的,绑定过程应该是看用户表是否存在该手机号,有的话就直接关联 user_id,没有的话就创建一条 user 记录再进行关联

6年前 评论

执行 php artisan migrate 报 Class 'AddRefeences' not found
我找到了该文件目录 确实没有该类 可我其他 laravel 项目该文件也无该类 为什么不会报错 双方版本一致的情况下

6年前 评论