Laravel 5.7电子邮件验证错误,未定义路由[verification.verify]

时间:2018-10-04 19:05:32

标签: php laravel laravel-5 laravel-5.7

我正在尝试在Laravel 5.7中实施电子邮件验证。我已经在MustVerifyEmail模型上实现了User

class User extends Authenticatable implements MustVerifyEmail 
{ 
}

但是在注册后,我收到此错误Route [verification.verify] not defined

我在此缺少什么?请指导?

7 个答案:

答案 0 :(得分:6)

Laravel包含Auth\VerificationController类,该类包含发送验证链接和验证电子邮件的必要逻辑。要为此控制器注册必要的路由,请将verify选项传递给Auth::routes方法:

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

您可以在此处阅读更多信息:https://laravel.com/docs/5.7/verification

答案 1 :(得分:2)

您在Auth::routes(['verify' => true])中缺少Routes\Web.php

我建议观看此视频,其中详细说明了Laravel 5.7中电子邮件验证的工作原理。

https://www.youtube.com/watch?v=dbmox3tgI2k

答案 2 :(得分:0)

routes/web.php文件中,添加以下代码:

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

参考:https://laravel.com/docs/5.7/verification#verification-routing

答案 3 :(得分:0)

在routes / web.php中确保 Auth::routes(['verify' => true]); 然后运行:

php artisan route:cache

清除缓存的路由并更新传入的更改

答案 4 :(得分:0)

您可以删除“已验证” 中间件,例如:

<?php

Route::middleware(['auth', 'verified'])
    ->group(function(){

     ...

});

?>

尝试一下,应该解决问题

答案 5 :(得分:0)

运行:

php artisan optimize:clear

它将清除您的缓存。

答案 6 :(得分:0)

真正发生了什么:

Route::middleware(['auth:sanctum', 'verified'])->get('/dashboard', function () {

(['auth:sanctum', 'verified']

当传递两个 Laravel 参数时,一个是身份验证,另一个是邮件验证。它说:它已通过身份验证。 ? 已验证? ok 回复:回复表中的用户:User email_verified_at 未在电子邮件激活日期注册,即它没有告诉我电子邮件存在。 ps 传递一个异常,因为有一个页面必须激活作为对此的响应......也就是说,作为对此......的响应 即使页面是在 Blade 上的 vue 中或在 auth 文件夹中的limewire 中创建的,您的电子邮件也不会被验证。

在 App\Models\User 搜索中

 // use Illuminate\Contracts\Auth\MustVerifyEmail;

活动:

use Illuminate\Contracts\Auth\MustVerifyEmail;

嗯实现

class User extends Authenticatable implements MustVerifyEmail

现在很多东西都不见了.. 我们通过以下参数验证内核是否处于活动状态:

在路径 App\Http\Kernel.php

// 'verified' => \Illuminate\Auth\Middleware\EnsureEmailIsVerified::class,

改变:

'verified' => \Illuminate\Auth\Middleware\EnsureEmailIsVerified::class,

在文件夹配置中: 配置\强化.php 这个:

    // Features::emailVerification(),

    Features::emailVerification(),

这个身份验证地狱中最重要的..路由: 您可以选择不同类型的路线……但根据您的资源或项目选择一种。

基本:

Route::middleware(['auth:sanctum'])->get('/dashboard', function () {
        return Inertia::render('Dashboard');
})->middleware('verified')->name('dashboard');

Route::middleware(['auth:sanctum','verified'])->get('/dashboard', function () {
        return Inertia::render('Dashboard');
})->name('dashboard');

有点肾上腺素:

Route::group(["middleware" => ['auth:sanctum','verified']], function () {
    Route::get('/dashboard', function () {
        return Inertia::render('Dashboard');
        // return "hola william";
    })->name('dashboard');
    //aca puedes segir colocando las paginas o recursos que quieres cargar mientras en usuario este autenticado y verificado...
});

错误来自哪里: 路由 [verification.verify] 未定义

这个路由/文件.. 供应商\laravel\framework\src\illuminate\Auth\Middleware\EnsureEmailsVerified.php

功能:

    public function handle($request, Closure $next, $redirectToRoute = null)
{
    if (! $request->user() ||
        ($request->user() instanceof MustVerifyEmail &&
        ! $request->user()->hasVerifiedEmail())) {
        return $request->expectsJson()
                ? abort(403, 'Your email address is not verified.')
                : Redirect::guest(URL::route($redirectToRoute ?: 'verification.notice'));
    }

    return $next($request);
}

线:

: Redirect::guest(URL::route($redirectToRoute ?: 'verification.notice'));

感谢您使用 laravel 在您的项目中取得成功。很抱歉,如果我写错了什么。