表设计的疑问?
目前微信登录或者说第三方登录,是直接把openid和unionid作为新增字段加入到用户表中的,登录时直接拉起授权认证完成用户注册+登录,那么会出现一个问题。用户web端用手机注册了个账号,然后再用微信登录,那么此时这个用户在用户表中会有两条记录,一个是手机号+密码的记录,另一个是微信的openid的记录,对应两个不同的账号,并且不太好关联,目前没有关联字段,如果又用QQ登录、微博登录,那么这个用户就会产生一大堆的用户记录,每换一种登录方式都是另一个独立的账号,这样的表设计是否不太合理?是不是应该每一个第三方登录都应该新建一个表,以user表为主,比如给微信登录建一个微信表,用户依然是微信直接授权登录,但是可以通过绑定手机号的方式,与现有的web段的账号进行关联,以user_id字段为外键,关联之后,原本的微信获取的nickname等等直接废弃,以user表的信息为主,这样是不是可行的方案,只不过如果这样的话,其他很多接口估计都要改
其它只有一个user表一样可以做到,你需要的是有多个登录的方法,通过类型来判断是哪种登录就可以了,比如微信登录注册后需要去绑定手机号,通过手机号查找user表是否有记录,有就合并到一起,没有就新建一个手机号,如果是第二次登录,数据库有数据就不需要再判断了。
系统支持QQ、微博、微信等多个三方平台登录,两种选择:
这是目前多个第三方平台的情况。
但是目前在微信环境中,很多H5都只提供微信环境,所以在进入H5的时候就去自动那微信授权,拿到openid,头像,昵称然后直接创建 user 账号,免除了用户主动去创建账号绑定第三方平台的流程。
@shjchen
@Jourdon 恩,都是正解,第三方登录之后不能直接进入用户中心,必须要绑定用户手机号之后才能登录,我看了知乎的微信登录就是需要手机验证码的,绑定过程应该是看用户表是否存在该手机号,有的话就直接关联user_id,没有的话就创建一条user记录再进行关联
执行php artisan migrate 报 Class 'AddRefeences' not found
我找到了该文件目录 确实没有该类 可我其他laravel项目该文件也无该类 为什么不会报错 双方版本一致的情况下