我正在尝试在 Laravel 5.7 中实现电子邮件验证。我已经MustVerifyEmail
在User
模型上实现了。
class User extends Authenticatable implements MustVerifyEmail
{
}
但是注册后我得到了这个错误Route [verification.verify] not defined
。
我在这缺少什么?请指导?
我正在尝试在 Laravel 5.7 中实现电子邮件验证。我已经MustVerifyEmail
在User
模型上实现了。
class User extends Authenticatable implements MustVerifyEmail
{
}
但是注册后我得到了这个错误Route [verification.verify] not defined
。
我在这缺少什么?请指导?
Laravel 包含Auth\VerificationController
包含发送验证链接和验证电子邮件的必要逻辑的类。要为此控制器注册必要的路由,请将verify
选项传递给Auth::routes
方法:
Auth::routes(['verify' => true]);
您可以在此处阅读更多信息:https ://laravel.com/docs/5.7/verification
你Auth::routes(['verify' => true])
在Routes\Web.php
.
我建议观看此视频,其中详细解释了 Laravel 5.7 中电子邮件验证的工作原理。
真正发生的事情:
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 项目中的成功。对不起,如果我写错了。
跑:
php artisan optimize:clear
它将清除您的缓存。
在routes/web.php
文件中,添加以下代码:
Auth::routes(['verify' => true]);
参考:https ://laravel.com/docs/5.7/verification#verification-routing
在 routes/web.php 确保
Auth::routes(['verify' => true]);
然后运行:
php artisan route:cache
清除缓存的路由并更新传入的更改
您可以删除“已验证”中间件,例如:
<?php
Route::middleware(['auth', 'verified'])
->group(function(){
...
});
?>
试试吧,应该能解决问题