表设计的疑问?

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

《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
讨论数量: 4
Jourdon

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

5年前 评论

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

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

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

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

5年前 评论

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

5年前 评论

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

5年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!