verified中间件强制已登录用户完成邮箱验证后才能访问受保护路由:未登录用户直接放行;已登录但email_verified_at为null时重定向至/email/verify。

verified中间件的作用是:强制已登录用户完成邮箱验证,才能访问受保护的路由。
它只对已认证用户生效
中间件不会拦截访客(未登录)用户。它首先检查 $request->user() 是否存在——如果用户没登录,它直接放行;只有当用户已登录但 email_verified_at 为 null 时,才会重定向到邮箱验证提示页(如 /email/verify)。
典型触发场景
- 用户刚注册,收到验证邮件但还没点击链接
- 用户登录后试图访问个人中心、设置页、下单页等需验证身份的页面
- 路由明确绑定了
middleware('verified'),例如:
Route::get('/settings', [SettingsController::class, 'edit'])->middleware('verified');
它不做的事
- 不阻止访客浏览首页、文章列表、产品介绍等公共页面
- 不自动发送验证邮件(发送逻辑由注册或重发按钮触发)
- 不校验邮箱格式或真实性(那是注册时的验证职责)
- 不处理过期签名或URL篡改(那是
signed中间件的职责)
底层行为简述
它本质是 EnsureEmailIsVerified 类的实例,在 handle() 方法中做了两件事:
— 若用户未登录,直接执行 $next($request) 放行
— 若用户已登录但未验证邮箱,则返回重定向响应,跳转至 verification.notice 视图


















