首页 > 试题广场 >

请设计一个登录认证系统,包括用户注册验证和登录。请同时描述数

[问答题]
请设计一个登录认证系统,包括用户注册验证和登录。请同时描述数据库结构。
可以分为两种登录方式:
第一种:使用 用户名/邮箱/手机号 + 密码 登陆。
第二种:第三方登陆 。

设计数据表users的列为(uid, username, email, phone, password) 其中username、email、 phone都应该是unique。
登录时 select 1 from users where username = '  ' or email = '  ' or phone = '  ' and password = '  ';
这样做的缺点是,A的用户名可以设置成是B的电话号码或者邮箱。
可以使用正则表达式来区分出邮箱和电话号码。如果是这两种格式则不允许注册为用户名?
也可以用正则表达式来区分出是邮箱还是电话号码,然后再查数据库。


请求第三方登陆通常会返回一个openid。

设计数据表third为(uid, openid, accessToken, type) ,分别对应users表的uid, 第三方登陆的openid,第三方登陆的accessToken, 第三方登陆的类型(如微博=1、qq=2)。

登录流程:

  • 如果在数据表中没查到这个第三方登陆的openid,那就往数据表里填入,代表新用户注册,然后可以引导用户填写 用户名/邮箱/手机号 + 密码 将两种登陆关联起来。当然也可以跳过引导步骤。那么可以uid填一个随机字符串之类的。
  • 如果在数据库中查到了第三方登陆的openid,代表用户已注册,那就直接登录成功。


发表于 2018-07-20 09:52:00 回复(0)