Laravel 5.7电子邮件验证路线

时间:2018-09-30 09:22:13

标签: php laravel

在Laravel 5.7上添加了电子邮件验证功能。但是在我的项目中,我没有使用默认的路由名称,而是出于自己的目的添加了前缀。现在,当我添加以下代码以添加验证路由时,它会显示错误。

Auth::routes(['verify' => true]);

错误消息表明verification.verify路由不存在。我在哪里可以在项目中更新此路线名称?还是使用此功能的唯一方法是遵循默认的身份验证路由名称?

项目源代码位于https://github.com/nasirkhan/laravel-starter/tree/l57

4 个答案:

答案 0 :(得分:6)

使用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');

然后根据需要进行自定义:)

答案 1 :(得分:1)

任何人到这里寻找最新的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');

答案 2 :(得分:0)

要更改验证过程的执行路径时,必须更改验证过程的所有方式。

电子邮件验证通知流程

在注册过程中,将发出事件Illuminate\Auth\Events\Registered。 Laravel有一个已经注册在Illuminate\Auth\Listeners\SendEmailVerificationNotification中的监听器App\Providers\EventServiceProvider

在实现MustVerifyEmail接口并发出Registered事件后,SendEmailVerificationNotification侦听器将通过检查以下内容来检查App\User是否已经使用了Illuminate\Contracts\Auth\MustVerifyEmail特性:如果用户创建的是MustVerifyEmail的实例,如果是,它将在sendEmailVerificationNotification上调用user方法,当它使用{{1}时获得此方法的实现}。

验证路线的自定义

要更改验证过程的行为,您可以自定义Illuminate\Auth\MustVerify以发出自定义sendEmailVerificationNotification,该自定义event可以具有自定义监听器,您将在其中执行所有验证工作并通知{{1 }}通过电子邮件发送,您将在其中通过自定义路线发送验证过程

答案 3 :(得分:0)

就我而言,我遇到了同样的问题,并且收到了消息

InvalidArgumentException 

Attribute [auth] does not exist.

at vendor/laravel/framework/src/Illuminate/Routing/RouteRegistrar.php:92

我已经解决了更新我的作曲家可执行文件和laravel本地文件的问题。

composer global self-update

composer update

似乎我的作曲家可执行文件正在使用旧版本的laravel安装程序。