Laravel 8:在 API 中使用 Fortify

laravel

1个回答

写回答

mingdi7523

2025-10-21 18:30

+ 关注

Laravel
Laravel

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,构建起安全可靠的身份验证系统吧!

举报有用(4分享收藏

Copyright © 2025 IZhiDa.com All Rights Reserved.

知答 版权所有 粤ICP备2023042255号