Laravel 10.20.0中Jetstream邮箱验证不生效问题求助
解决Laravel Jetstream未验证邮箱仍可登录的问题
你还需要完成以下两项关键配置:
在Web中间件组启用邮箱验证中间件
打开app/Http/Kernel.php,找到web中间件组,添加邮箱验证中间件:protected $middlewareGroups = [ 'web' => [ // 保留原有其他中间件 \Illuminate\Auth\Middleware\EnsureEmailIsVerified::class, ], // ... ];这个中间件会拦截已登录但未验证邮箱的用户,强制跳转至验证提示页面。
自定义登录后的跳转逻辑(可选但推荐)
默认登录成功后会直接进入首页,若要让未验证用户登录后直接显示验证提示,可自定义Fortify的登录响应:- 创建自定义响应类
app/Http/Responses/LoginResponse.php:<?php namespace App\Http\Responses; use Laravel\Fortify\Contracts\LoginResponse as LoginResponseContract; class LoginResponse implements LoginResponseContract { public function toResponse($request) { if (!$request->user()->hasVerifiedEmail()) { return redirect()->route('verification.notice'); } return redirect()->intended(config('fortify.home')); } } - 在
app/Providers/FortifyServiceProvider.php的boot方法中绑定该响应:use App\Http\Responses\LoginResponse; use Laravel\Fortify\Contracts\LoginResponse as LoginResponseContract; public function boot() { // 保留原有其他配置 $this->app->bind(LoginResponseContract::class, LoginResponse::class); }
- 创建自定义响应类
最后确认config/fortify.php中的home配置正确,且项目中存在verification.notice路由(Jetstream/Fortify环境下通常已自动生成)。
内容的提问来源于stack exchange,提问作者sunset-crow
相关产品推荐
相关产品推荐

