有这么一个需求:
用户登录模块,不支持选择登录方式,只有一个文本输入框,同时支持:QQ号,手机号,电子邮件,昵称,身份证等(假如用户都填写了这5个字段的值)任意一个字段 + 密码组合进行登录, 有没有好的实现方式呢?
虽然这个需求有点奇葩,如果要优雅一点解决问题:
1、新建表user_security 中包含 user_id,ideneity 两个字段(虽然不懂为什么没有密码)。
2、新增用户时,user_security 表增加5条记录(QQ号,手机号,电子邮件,昵称,身份证 分别与user_id组合)。
3、鉴权的时候,只需要找到用户输入的登录名进行匹配。
4、对了,记得建立索引。
QQ号:5到10位数字
手机号:1开头的11位数字,还可以通过前三位号段限制
电子邮件:必带@的及一个.加后缀结尾的
昵称:限制和其他不同
身份证:肯定是15或18位数字 最后也为可以是x 罗列规则,再进行分析,简单先判断,你一个字段匹配五个,那么昵称就要限制
跟普通的登陆没什么大的区别
可能就是多增加一步
你前台登陆的时候肯定要选择登陆方式的吧?
那么你的默认登陆方式有至少5个选项
QQ号
、手机号
、电子邮件
、昵称
、身份证
,只能选其一比如你的用户表有
qq
phone
email
nike_name
card
这些字段如果前台登陆方式选择了昵称 就拿nike_name作为用户名进行登陆校验;
如果涉及到第三方登陆,那么就再加一个用户第三方表,存储诸如QQ、微博、微信等第三方登陆相关的信息,根据接口和业务设置相应的表字段;