Laravel多域名下字段验证的方法
Laravel  /  管理员 发布于 8年前   238
前言 正在开发一个统一作者后台,用来让作者给网站提交软件。我们已经对其中一个网站开发了作者后台,现在我们打算将这一个后台提供给其他网站。它具备如下的一些特点: 功能拆分 开始之前我们需要对系统各个功能点进行拆分,估算受影响的点: 登录注册 登录注册功能首当其冲,我们需要用户在注册时通过访问的域名不同,记录的身份也不同。所以我们需要进行如下的处理: 数据处理 注册判重 判重依据: 我们知道使用 默认表单验证: 默认登录验证字段 现在我们需要分析我们的需求: 在单一用户后台中,email判重已经足够了,但是对于多种用户一起使用就不太够了。 假设:我们有A,B两个域名,对应a,b两种用户,我们需要在一张表中存储a,b,首先我们判断a,b是属于那个域名的(站点),其次,看这个用户是否重复。 下面我们用Laravel表单验证来实现一下: 1、增加字段: 为方便演示,我直接在 make auth 生成的迁移文件上直接修改,大家不要在实际项目中直接修改,而是通过新建迁移文件,使用修改表结构的方式增加字段 注意: 在这个需求中,我们对迁移文件中的email和name字段不需要进行unique限定,因为他们的唯一性是有依赖的,不是独立的。 2、模拟用户注册,插入身份信息 3、进行判重处理 4、测试 进行第一次注册,数据库截如下: 进行第二次注册,相同邮件,不同身份: 相同身份,相同邮箱测试 登录验证 覆写credentials,传入身份验证字段 总结 以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家的支持。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:users'], 'password' => ['required', 'string', 'min:8', 'confirmed'], ]);}
// Path:vendor/laravel/framework/src/Illuminate/Foundation/Auth/AuthenticatesUsers.phppublic function username(){ return 'email';}// 当然可以修改验证字段(看过文档的都知道),注意:登录验证字段必须是在表里面唯一的。
public function up(){ Schema::create('users', 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(); });}
// Path: app/Http/Controllers/Auth/RegisterController.phpprotected function create(array $data){ return User::create([ 'name' => $data['name'], 'email' => $data['email'], 'password' => Hash::make($data['password']), 'identity' => 'pcsoft', // 模拟用户注册时,插入身份字段值 ]);}
protected function validator(array $data){ return Validator::make($data, [ 'name' => ['required', 'string', 'max:255'], 'email' => ['required', 'string', 'email', 'max:255', Rule::unique('users')->where(function ($query) { $query->where('identity', '=', 'onlinedown'); })], // 这句话的意思:按照什么条件对 users 表中的 email 去重,我们需要按照身份字段等于我们访问的域名对 email 去重, 'password' => ['required', 'string', 'min:8', 'confirmed'], ]);}
// Path:app/Http/Controllers/Auth/LoginController.phpprotected function credentials(Request $request){ $request->merge(['identity' => Controller::getWebPrefix()]); return $request->only($this->username(), 'password', 'identity');}
您可能感兴趣的文章:
122 在
学历:一种延缓就业设计,生活需求下的权衡之选中评论 工作几年后,报名考研了,到现在还没认真学习备考,迷茫中。作为一名北漂互联网打工人..123 在
Clash for Windows作者删库跑路了,github已404中评论 按理说只要你在国内,所有的流量进出都在监控范围内,不管你怎么隐藏也没用,想搞你分..原梓番博客 在
在Laravel框架中使用模型Model分表最简单的方法中评论 好久好久都没看友情链接申请了,今天刚看,已经添加。..博主 在
佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 @1111老铁这个不行了,可以看看近期评论的其他文章..1111 在
佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 网站不能打开,博主百忙中能否发个APP下载链接,佛跳墙或极光..
Copyright·© 2019 侯体宗版权所有·
粤ICP备20027696号