[英]Laravel 5.7 Email Verification Routes
在 Laravel 5.7 上添加了电子邮件验证功能。 但是在我的项目中,我不使用默认路由名称并为我自己的目的添加了一个前缀。 现在,当我添加以下代码以添加验证路由时,它显示错误。
Auth::routes(['verify' => true]);
错误消息显示verification.verify
路由不存在。 我在哪里可以在我的项目中更新此路线名称? 或者使用此功能的唯一方法是遵循默认的身份验证路由名称?
项目源代码可在https://github.com/nasirkhan/laravel-starter/tree/l57 获得
而不是使用Auth::routes(['verify' => true]);
只需使用Auth::routes();
并手动添加这些路由:
Route::get('email/verify', 'Auth\VerificationController@show')->name('verification.notice');
Route::get('email/verify/{id}', 'Auth\VerificationController@verify')->name('verification.verify');
Route::get('email/resend', 'Auth\VerificationController@resend')->name('verification.resend');
然后根据需要自定义:)
任何来到这里并正在寻找最新 Laravel 的 tompec版本的人,请使用以下内容。 注意/{hash}
。
$this->get('email/verify', 'Auth\VerificationController@show')->name('verification.notice');
$this->get('email/verify/{id}/{hash}', 'Auth\VerificationController@verify')->name('verification.verify');
$this->post('email/resend', 'Auth\VerificationController@resend')->name('verification.resend');
当您想要更改完成验证过程的路线时,您必须更改验证过程的所有工作方式。
在注册过程中,会发出一个Illuminate\\Auth\\Events\\Registered
。 Laravel 带有一个监听器Illuminate\\Auth\\Listeners\\SendEmailVerificationNotification
,它已经在App\\Providers\\EventServiceProvider
。
在发出Registered
事件时实现MustVerifyEmail
接口后, SendEmailVerificationNotification
侦听器将检查App\\User
是否已经使用了Illuminate\\Contracts\\Auth\\MustVerifyEmail
特性,方法是检查用户创建的是否是MustVerifyEmail
的实例,如果是这样的话将在user
上调用sendEmailVerificationNotification
方法,当它使用Illuminate\\Auth\\MustVerify
trait 时获取此方法的实现。
要更改验证过程的行为,您可以自定义sendEmailVerificationNotification
以发出自定义event
,该event
可以具有自定义侦听器,您将在其中执行所有验证内容并通过电子邮件通知user
,您将通过该电子邮件发送自定义路由将完成验证过程
就我而言,我遇到了同样的问题,并且收到了消息
InvalidArgumentException
Attribute [auth] does not exist.
at vendor/laravel/framework/src/Illuminate/Routing/RouteRegistrar.php:92
我已经解决了它更新我的 Composer 可执行文件和 Laravel 本地文件的问题。
composer global self-update
composer update
似乎我的作曲家可执行文件正在使用旧版本的 laravel 安装程序。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.