我正在尝试在Laravel 5.7中实施电子邮件验证。我已经在MustVerifyEmail
模型上实现了User
。
class User extends Authenticatable implements MustVerifyEmail
{
}
但是在注册后,我收到此错误Route [verification.verify] not defined
。
我在此缺少什么?请指导?
答案 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中电子邮件验证的工作原理。
答案 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 在您的项目中取得成功。很抱歉,如果我写错了什么。