13

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

class User extends Authenticatable implements MustVerifyEmail 
{ 
}

但是注册后我得到了这个错误Route [verification.verify] not defined

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

4

7 回答 7

31

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

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

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

于 2018-10-04T19:12:02.900 回答
14

Auth::routes(['verify' => true])Routes\Web.php.

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

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

于 2018-10-04T19:08:54.820 回答
2

真正发生的事情:

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

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

当传递 laravel 的两个参数时,一个是身份验证,另一个是邮件验证。它说:它已通过身份验证。并验证了 ok 回复:回复表中的用户:用户 email_verified_at 在邮箱激活日没有注册,也就是没有告诉我邮箱存在。ps 传递了一个例外,因为有一个您必须激活的页面作为对此的响应...也就是说,作为对此的响应...即使该页面是在刀片上的 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,

在文件夹 Config: config\fortify.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...
});

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

这条路线/文件.. vendor\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 项目中的成功。对不起,如果我写错了。

于 2021-06-02T02:38:31.607 回答
1

跑:

php artisan optimize:clear

它将清除您的缓存。

于 2020-11-06T15:42:51.750 回答
1

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

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

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

于 2019-06-11T10:17:12.553 回答
0

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

php artisan route:cache

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

于 2020-10-13T05:32:26.433 回答
0

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

<?php

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

     ...

});

?>

试试吧,应该能解决问题

于 2020-10-18T20:16:29.457 回答