首页 > 作文

Laravel多域名下字段验证的方法

更新时间:2023-04-07 10:58:23 阅读: 评论:0

前言

正在开发一个统一作者后台,用来让作者给网站提交软件。我们已经对其中一个网站开发了作者后台,现在我们打算将这一个后台提供给其他网站。它具备如下的一些特点:

我们访问的域名是不一致的,解决方案见我的一篇文章,l烟花不堪剪aravel 路由研究之domain 解决多域名问题 其次各个站点对后台的要求都是一致的,也就是说,一个后台n筒子骨汤的做法各站去用。

功能拆分

开始之前我们需要对系统各个功能点进行拆分,估算受影响的点:

登录注册

登录注册功能首当其冲,我们需要用户在注册时通过访问的域名不同,记录的身份也不同。所以我们需要进行如下的处理:

增加字段identity进行判重进行登录验证

数据处理

这个就不进行讨论了。根据用户所属身份不同,调用的数据也不同就行了。

注册判重

判重依据:

我们知道使用php artisan make:auth 后,默认使用email登录,在表单验证中默认对email进行判重。代码如下:

默认表单验证:

// path:app/http/controllers/auth/registercontroller.phpprotected function validator(array $data){ return validator::make($data, [ 'name' => ['required', 'string', 'max:255'], 'email' => ['required', 'string', 'email', 'max:255', 'unique:urs'], 'password' => ['required', 'string', 'min:8', 'confirmed'], ]);}

默认登录验证字段

// path:vendor/laravel/framework/src/illuminate/foundation/auth/authenticatesurs.phppublic function urname(){ return 'email';}// 当然可以修改验证字段(看过文档的都知道),注意:登录验证字段必须是在表里面唯一的。

现政法类院校在我们需要分析我们的需求:

在单一用户后台中,email判重已经足够了,但是对于多种用户一起使用就不太够了。

假设:我们有a,b两个域名,对应a,b两种用户,我们需要在一张表中存储a,b,首先我们判断a,b是属于那个域名的(站点),其次,看这个用户是否重复。

下面我们用laravel表单验证来实现一下:

1、增加字段:

为方便演示,我直接在 make auth 生成的迁移文件上直接修改,大家不要在实际项目中直接修改,而是通过新建迁移文件,使用修改表结构的方式增加字段

public function up(){ schema::create('urs', function (blueprint $table) { $table->bigincrements('id'); $table->string('name'); $table->string('email'); // 去掉原来的unique $table->string('identity'); // 增加的字段 $table->timestamp('email_verified_at')->nullable(); $table->string('password'); $table->remembertoken(); $table->timestamps(); });}

注意: 在这个需求中,我们对迁移文件中的email和name字段不需要进行unique限定,因为他们的唯一性是有依赖的,不是独立的。

2、模拟用户注册,插入身份信息

// path: app/http/controllers/auth/registercontroller.phpprotected function create(array $data){ return ur::create([ 'name' => $data['name'], 'email' => $data['email'], 'password' => hash::make($data['password']), 'identity' => 'pcsoft', // 模拟用户注册时,插入身份字段值 ]);}

3、进行判重处理

protected function validator(array $data){ return validator::make($data, [ 'name'came => ['required', 'string', 'max:255'], 'email' => ['required', 'string', 'email', 'max:255', rule::unique('urs')->where(function ($query) {  $query->where('identity', '=', 'onlinedown'); })], // 这句话的意思:按照什么条件对 urs 表中的 email 去重,我们需要按照身份字段等于我们访问的域名对 email 去重, 'password' => ['required', 'string', 'min:8', 'confirmed'], ]);}

4、测试终于近义词

进行第一次注册,数据库截如下:

进行第二次注册,相同邮件,不同身份:

相同身份,相同邮箱测试

登录验证

覆写credentials,传入身份验证字段

// path:app/http/controllers/auth/logincontroller.phpprotected function credentials(request $request){ $request->merge(['identity' => controller::getwebprefix()]); return $request->only($this->urname(), 'password', 'identity');}

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对www.887551.com的支持。

本文发布于:2023-04-07 10:58:22,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/zuowen/d664f200f89112a09e0329e52b029bbc.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

本文word下载地址:Laravel多域名下字段验证的方法.doc

本文 PDF 下载地址:Laravel多域名下字段验证的方法.pdf

标签:字段   身份   后台   域名
相关文章
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图