Laravel 8:在 API 中使用 Fortify

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

Laravel 8:在 API 中使用 Fortify

在现代的 Web 开发中,构建安全的身份验证系统是至关重要的。Laravel 是一个流行的 PHP 框架,提供了强大的身份验证功能。Laravel 8 引入了一个名为 Fortify 的新功能,它为我们提供了一个简单而灵活的方式来构建身份验证系统。

Fortify 是一个基于 Laravel 的身份验证组件,旨在帮助开发者轻松地构建身份验证功能。它提供了许多内置的功能,如注册、登录、密码重置等,同时也支持自定义功能。在本文中,我们将探讨如何在 Laravel 8 的 API 中使用 Fortify 来构建强大的身份验证系统。

首先,我们需要在 Laravel 8 项目中安装 Fortify。通过 Composer 运行以下命令来安装 Fortify:

bash

composer require laravel/fortify

安装完成后,我们需要发布 Fortify 的配置文件和视图文件。在终端中运行以下命令:

bash

php artisan vendor:publish --provider="Laravel\Fortify\FortifyServiceProvider"

这将生成 `config/fortify.php` 配置文件和一些视图文件,我们可以根据需要进行自定义。

接下来,我们需要配置 Fortify 的路由。在 `routes/api.php` 文件中添加以下代码:

php

use Laravel\Fortify\Http\Controllers\AuthenticatedSessionController;

use Laravel\Fortify\Http\Controllers\RegisteredUserController;

use Laravel\Fortify\Http\Controllers\PasswordResetLinkController;

use Laravel\Fortify\Http\Controllers\NewPasswordController;

// 登录、登出和注册

Route::post('/login', [AuthenticatedSessionController::class, 'store']);

Route::post('/logout', [AuthenticatedSessionController::class, 'destroy']);

Route::post('/register', [RegisteredUserController::class, 'store']);

// 密码重置

Route::post('/forgot-password', [PasswordResetLinkController::class, 'store']);

Route::post('/reset-password', [NewPasswordController::class, 'store']);

这样我们就设置好了 Fortify 的路由,可以通过这些路由来执行身份验证相关的操作。

下面,我们将使用 Fortify 来实现注册和登录功能。首先,我们需要在 `app/Http/Controllers/RegisteredUserController.php` 文件中添加以下代码:

php

namespace App\Http\Controllers;

use App\Models\User;

use Illuminate\Http\Request;

use Illuminate\Support\Facades\Hash;

use Laravel\Fortify\Contracts\RegisterResponse;

class RegisteredUserController extends Controller

{

public function store(Request $request, RegisterResponse $response)

{

$request->validate([

'name' => 'required|string|max:255',

'email' => 'required|string|email|max:255|unique:users',

'password' => 'required|string|min:8|confirmed',

]);

$user = User::create([

'name' => $request->name,

'email' => $request->email,

'password' => Hash::make($request->password),

]);

return $response->toResponse($request, $user);

}

}

在上述代码中,我们首先进行了请求数据的验证,确保用户提供有效的注册信息。然后,我们使用 `User` 模型的 `create` 方法创建一个新用户,并使用 `Hash` 类对密码进行加密。最后,我们通过 `RegisterResponse` 来返回注册成功的响应。

现在,我们需要在 `app/Http/Controllers/AuthenticatedSessionController.php` 文件中添加以下代码来实现登录功能:

php

namespace App\Http\Controllers;

use Illuminate\Http\Request;

use Illuminate\Support\Facades\Auth;

use Laravel\Fortify\Contracts\LoginResponse;

class AuthenticatedSessionController extends Controller

{

public function store(Request $request, LoginResponse $response)

{

$request->validate([

'email' => 'required|string|email',

'password' => 'required|string',

]);

$credentials = $request->only('email', 'password');

if (Auth::attempt($credentials)) {

return $response->toResponse($request);

}

return response()->json(['message' => 'Invalid credentials'], 401);

}

}

在上述代码中,我们首先验证用户提供的登录凭据。然后,我们使用 `Auth::attempt` 方法来尝试登录用户。如果登录成功,我们通过 `LoginResponse` 返回登录成功的响应。如果登录失败,我们返回一个带有错误信息的响应。

通过以上步骤,我们已经成功地在 Laravel 8 的 API 中使用 Fortify 实现了注册和登录功能。我们可以根据需要进一步自定义 Fortify 的配置,添加其他功能。

在本文中,我们学习了如何在 Laravel 8 的 API 中使用 Fortify 构建身份验证系统。我们首先安装了 Fortify,并发布了相关的配置文件和视图文件。然后,我们配置了 Fortify 的路由,并实现了注册和登录功能。通过 Fortify,我们可以轻松地构建强大的身份验证系统,确保我们的应用程序的安全性。

希望本文对你理解如何在 Laravel 8 的 API 中使用 Fortify 有所帮助。开始使用 Fortify,构建起安全可靠的身份验证系统吧!