在Laravel 5.7上添加了电子邮件验证功能。但是在我的项目中,我没有使用默认的路由名称,而是出于自己的目的添加了前缀。现在,当我添加以下代码以添加验证路由时,它会显示错误。
Auth::routes(['verify' => true]);
错误消息表明verification.verify
路由不存在。我在哪里可以在项目中更新此路线名称?还是使用此功能的唯一方法是遵循默认的身份验证路由名称?
项目源代码位于https://github.com/nasirkhan/laravel-starter/tree/l57
答案 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安装程序。