Laravel 8 Fortify - 电子邮件验证链接不起作用(Safari)

作者:编程家 分类: laravel 时间:2025-08-15

使用 Laravel 8 和 Fortify 进行电子邮件验证时,可能会遇到一个问题,即在 Safari 浏览器中,电子邮件验证链接无法正常工作。本文将探讨这个问题,并提供解决方案。

问题描述

在 Laravel 8 中,Fortify 是一个流行的身份验证库。它提供了一种简单的方式来设置电子邮件验证功能。然而,一些用户反馈称,在 Safari 浏览器中,当他们点击验证链接时,并没有触发预期的行为。

问题原因

问题的原因是 Safari 浏览器对于跨域请求的处理方式不同于其他浏览器。当用户点击验证链接时,Safari 浏览器会阻止跨域请求并显示一个错误。

解决方案

为了解决这个问题,我们可以使用 Laravel 的中间件来处理跨域请求。下面是解决方案的具体步骤:

步骤 1: 创建中间件

首先,我们需要创建一个中间件来处理跨域请求。可以使用以下命令来生成中间件文件:

php artisan make:middleware HandleCors

然后,在生成的中间件文件中,添加以下代码:

php

namespace App\Http\Middleware;

use Closure;

use Illuminate\Http\Request;

class HandleCors

{

public function handle(Request $request, Closure $next)

{

$response = $next($request);

$response->header('Access-Control-Allow-Origin', '*');

$response->header('Access-Control-Allow-Methods', 'GET, POST, PUT, DELETE');

$response->header('Access-Control-Allow-Headers', 'Content-Type, Authorization');

return $response;

}

}

步骤 2: 注册中间件

接下来,我们需要将中间件注册到应用程序中。在 `app/Http/Kernel.php` 文件的 `$routeMiddleware` 数组中,添加以下代码:

php

'cors' => \App\Http\Middleware\HandleCors::class,

步骤 3: 应用中间件

最后,我们需要将中间件应用到 Fortify 的路由上。在 `routes/fortify.php` 文件中,添加以下代码:

php

Route::middleware(['cors'])->group(function () {

// Fortify routes here

});

通过完成以上步骤,我们成功解决了在 Safari 浏览器中电子邮件验证链接不起作用的问题。现在,当用户点击验证链接时,应该能够正常完成验证流程。

在本文中,我们讨论了在 Safari 浏览器中,使用 Laravel 8 和 Fortify 进行电子邮件验证时出现的问题,并提供了解决方案。通过创建一个中间件来处理跨域请求,我们能够解决 Safari 浏览器阻止跨域请求的问题,从而使电子邮件验证链接正常工作。

希望本文对于使用 Laravel 8 和 Fortify 进行电子邮件验证的开发者们有所帮助。如果你遇到了这个问题,希望你能按照上述步骤进行解决。祝你的电子邮件验证功能顺利运行!