当前位置: 首页 > 后端技术 > PHP

解决多字段(第三方登录)字段设计

时间:2023-03-29 17:14:57 PHP

众所周知,一个成熟的网站必须支持多种登录方式。当然市面上常见的就是类似github、微博、qq、微信的登录。所以这几天,我就按照这些功能一一练习。昨天完成了微博登录,今天说说字段设计问题1.如何合理分隔字段首先假设字段如下:用户名,密码,联系方式,头像,个人信息,性别,通讯地址,age,第三方登录字段1,第三方登录字段2,当然,上面只是简单的,当还是这样的时候,好像字段很多。在数据库设计的原则上,一定要有隔离。大量字段的存在对索引很不友好,容易造成不必要的消耗。根据重要程度:用户名、密码、通讯方式(如果作为登录字段存在),登录字段1和登录字段2以上即可满足登录条件要求。其他的可以通过关联查询轻松获取。地址的设计必须做成另外一张表,用户信息不能共存。地址是一对多的。以的形式存在,可以通过中间表关联,也可以直接关联。2、如何有效解决登录字段问题?首先,公码的共同使用是合理的。什么是公共代码?加密函数/比对密码正确性获取登录字段类型(用一个函数判断当前登录字段,返回一个字段名)获取用户信息第一步:获取当前字段,用于用户查询,密码比对,获取loginValidation/***返回登录字段类型**@param$value*@returnbool|mixed|string*/functioncheckParamType($value){//邮箱是否匹配if(filter_var($value,FILTER_VALIDATE_EMAIL)){返回'电子邮件';}//判断手机是否匹配$res=filter_var($value,FILTER_CALLBACK,['options'=>function($value){if(preg_match('/^1[34578]\d{9}$/',$value)){return'phone';}}]);返回is_null($res)?false:$res;}第二步:解决登录密码验证问题我这里将用户和密码验证分开,通过字段查询用户,验证密码;如果没有找到,则直接返回nouser...publicstaticfunctionstore(LoginRequest$request){$name=$request->name;$password=$request->password;$field=checkParamType($name)?checkParamType($name):'名字';if(!$user=User::getUserInfo($name,$field)){session()->flash('状态','用户不存在');返回重定向()->返回();}if(!$user=self::checkPassword($user,$password)){session()->flash('状态','密码错误');返回重定向()->返回();}\Auth::login($user);返回重定向('/');}...publicstaticfunctioncheckPassword($user,$pwd){//加密比较if($user->password===eny($pwd,$user->salt)){return$user;}返回假;}...关于注册的逻辑流程我用的是注册的方式,当第三方登录授权登录后,会直接给Login权限注册用户,注册后跳转到登录页面。我使用的是邮箱或者手机号登录方式1)获取验证码第一步,用户需要填写邮箱地址,点击发送验证码按钮,发送验证码。服务器收到邮箱后,保存缓存的有效期,将用户的邮箱写入缓存,同时发送邮箱用户收到的验证码,写入注册字段并提交,以及验证相关数据的有效性。短信界面使用原腾讯云平台。:转载请联系我1562135624@qq.com