前言
正在开发一个统一的作者背景,供作者向网站提交软件。我们已经为其中一个网站开发了作者背景,现在我们打算向其他网站提供这个背景。它具有以下特点:
我们访问的域名不一致。请参阅我的文章了解解决方案。Laravel路由研究的领域解决了多领域的问题。其次,所有站点对背景的要求都是一样的,也就是说一个背景所有站点都用。功能分裂
在开始之前,我们需要分割系统的每个功能点,并估计受影响的点:
登录注册
登录注册功能首当其冲,我们需要用户注册不同的域名,不同的记录。因此,我们需要处理以下问题:
为重复判断和登录验证数据处理添加字段标识
这个就不讨论了。根据用户的身份不同,被叫数据也不同。注册重量确定
判断重量的依据:
我们知道在使用php artisan make:auth后,默认使用email登录,表单验证默认复制email。代码如下:
默认表单验证:
//path : app/Http/Controllers/Auth/registercontroller . ph protected函数验证器(array $ data){ return validator 3360: make($ data,[ 'name'=['required ',' string ',' email'=['required ',' string ',' email ',' max:255 ',' unique:users'],' password'=['required ',' string ',' min:8 ','}默认登录身份验证字段
//path : vendor/laravel/framework/src/light/Foundation/Auth/authenticatesusers . phpppublic函数username(){ return ' email ';}//当然可以修改验证字段(看过文档的人都知道)。注意:登录验证字段在表中必须是唯一的。现在我们需要分析我们的需求:
在单个用户的背景下,邮件重复判断就够了,但是多个用户一起使用是不够的。
假设:我们有两个域名A和B,分别对应用户A和B,我们需要将A和B存储在一个表中。首先,我们判断A和B属于那个域名(站点)。其次,我们看这个用户是否重复。
让我们使用Laravel表单验证来实现这一点:
1.添加字段:
为了方便演示,我直接修改make auth生成的迁移文件。您不应该在实际项目中直接修改它,而是通过创建新的迁移文件和修改表结构来添加字段
public function up(){ schema : create(' users '),function(蓝图$ table){ $ table-big increments(' id ');$ table-string(' name ');$ table-string(' email ');//移除原始的唯一$ table-string(' identity ');//添加了字段$ table-timestamp(' email _ verified _ at ')-可空();$ table-string(' password ');$ table-RememberToken();$ table-时间戳();});}注意:在这个需求中,我们不需要唯一限定迁移文件中的电子邮件和名称字段,因为它们的唯一性是依赖的,而不是独立的。
2.模拟用户注册并插入身份信息
//path : app/Http/Controllers/Auth/registercontroller . ph protected函数create(array $ data){ returnuser : create([' name '=$ data[' name '],' email'=$ data ['email'],' password '=has h 33603360 make($ data[' password ']),' identity'=' pcsoft ',}3.进行重量判断
受保护的函数验证程序(数组$ data){ return validator : make($ data,[ 'name'=['required ',' string ',' max:255'],' email'=['required ',' string ',' email ',' max : unique(' users ')-where(function($ query){ $ query-where(' identity ','=',' online down ');})],//这句话的意思:根据在users表中需要复制邮件的条件,我们需要根据与我们访问的域名相等的身份字段来复制邮件,' ' password'=['required ',' string ',' min33608 ',' confirmed'],]);}4.测试
首次注册时,数据库如下:
第二次注册,相同的电子邮件,不同的身份:
相同的身份,相同的邮箱测试
登录身份验证
覆盖凭据,传入身份验证字段
//path : app/Http/Controllers/Auth/logincontroller . ph受保护的函数凭据(Request $ Request){ $ Request-merge([' identity '=controller 3360: getwebprefix()]);只返回$request-only($this-username(),‘password’,‘identity’);}摘要
以上就是本文的全部内容。希望本文的内容对大家的学习或工作有一定的参考价值。谢谢你的支持。