首页 文章

Laravel 5.7电子邮件验证路由

提问于
浏览
-2

在Laravel 5.7上添加了电子邮件验证功能 . 但在我的项目中,我不使用默认路由名称并为我自己的目的添加了前缀 . 现在,当我添加以下代码来添加验证路由时,它会显示错误 .

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

错误消息显示 verification.verify 路由不存在 . 我在哪里可以更新项目中的路径名称?或者,使用此功能的唯一方法是遵循默认的Auth Route名称?

项目源代码可在https://github.com/nasirkhan/laravel-starter/tree/l57获取

2 回答

  • 0

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

    然后根据需要自定义:)

  • 3

    如果要更改验证过程将要完成的路径,则必须更改验证过程的所有工作方式 .

    电子邮件验证通知流程

    在注册过程中,将发出事件 Illuminate\Auth\Events\Registered . Laravel来了一个已经在 App\Providers\EventServiceProvider 注册的听众 Illuminate\Auth\Listeners\SendEmailVerificationNotification .

    在发出 Registered 事件后实现 MustVerifyEmail 接口后, SendEmailVerificationNotification 监听器将检查 App\User 是否已使用 Illuminate\Contracts\Auth\MustVerifyEmail 特征,方法是检查用户是否为 MustVerifyEmail 的实例,如果是这样的话,它将调用 user 上的 sendEmailVerificationNotification 方法 . 当它使用 Illuminate\Auth\MustVerify 特征时,它会获得此方法的实现 .

    自定义验证路线

    要更改验证过程的行为,您可以自定义 sendEmailVerificationNotification 以发出自定义 event ,其中可以有一个自定义侦听器,您将在其中执行所有验证内容并通过电子邮件通知 user ,您将在其中发送自定义路由,通过该自定义路由验证过程将完成

相关问题