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



我正在尝试在Laravel5.7中实现电子邮件验证。我已经在User模型上实现了MustVerifyEmail

class User extends Authenticatable implements MustVerifyEmail 
{ 
}

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

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

你在RoutesWeb.php中缺少Auth::routes(['verify' => true])

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

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

真正发生的事情:

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

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

在应用\模型\用户搜索中

// use IlluminateContractsAuthMustVerifyEmail;

积极:

use IlluminateContractsAuthMustVerifyEmail;

EH 实现

class User extends Authenticatable implements MustVerifyEmail

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

in route App\Http\Kernel.php

// 'verified' => IlluminateAuthMiddlewareEnsureEmailIsVerified::class,

改变:

'verified' => IlluminateAuthMiddlewareEnsureEmailIsVerified::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...
});

错误从何而来: 未定义路由 [验证.验证]

此路由/文件.. vendor\laravel\framework\src\illuminate\Auth\Middleware\EnsureEmailVerified.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'));

谢谢你,并与拉拉维尔一起在项目中取得成功。 对不起,如果我写错了什么。

运行:

php artisan optimize:clear

它将清除您的缓存。

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

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

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

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

php artisan route:cache

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

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

<?php
Route::middleware(['auth', 'verified'])
->group(function(){
...
});
?>

试试吧,应该解决问题

最新更新