通过 Laravel Sanctum 实现 PHP 安全验证

1. Laravel Sanctum 简介

Laravel Sanctum 是由 Laravel 提供的一种轻量级的身份验证系统,用于为单页面应用程序(SPA)或移动应用程序提供 API 认证。它使用 Laravel 的 SESSION 驱动和 Laravel 的 CSRF 保护以确保应用程序的安全性。

2. 安装 Laravel Sanctum

2.1 配置 Composer

在开始使用 Laravel Sanctum 之前,需要确保在 composer.json 文件的 require 部分中添加了 Sanctum 包。

"require": {

"laravel/sanctum": "^2.0"

}

然后运行以下命令进行安装:

composer install

2.2 配置数据库

在进行 Sanctum 的安装之前,需要先配置好数据库,确保 Laravel 连接到正确的数据库。

2.3 运行迁移文件

运行以下迁移命令来创建 Sanctum 需要的表:

php artisan migrate

2.4 配置中间件

将 Sanctum 的中间件添加到 app/Http/Kernel.php 文件的 $middlewareGroups 属性中的 api 中:

'api' => [

\Laravel\Sanctum\Http\Middleware\EnsureFrontendRequestsAreStateful::class,

'throttle:api',

\Illuminate\Routing\Middleware\SubstituteBindings::class,

],

3. 创建认证路由

在 routes/api.php 文件中添加以下代码,以创建一些示例的认证路由:

use Illuminate\Http\Request;

use Illuminate\Support\Facades\Route;

Route::middleware('auth:sanctum')->get('/user', function (Request $request) {

return $request->user();

});

Route::post('/register', function (Request $request) {

$user = App\Models\User::create([

'name' => $request->name,

'email' => $request->email,

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

]);

$token = $user->createToken('API Token')->plainTextToken;

return response()->json(['token' => $token]);

});

上述代码创建了两个示例路由:/user 和 /register。/user 路由需要认证用户才能访问,/register 路由用于创建新用户并返回 token。

4. 创建前端认证逻辑

在前端代码中,需要发送带有 CSRF 令牌的请求来实现 Laravel Sanctum 的身份验证。以下是一个示例:

<form method="POST" action="/register">

<input type="text" name="name">

<input type="email" name="email">

<input type="password" name="password">

<input type="hidden" name="_token" value="{{ csrf_token() }}">

<button type="submit">Register</button>

</form>

通过将 csrf_token() 的值设置为一个隐藏的表单字段,可以确保在发送请求时,Laravel Sanctum 能够验证请求的合法性。

5. 使用 Sanctum 进行身份验证

使用 Sanctum 进行身份验证非常简单。只需要在需要进行身份验证的路由中添加 auth:sanctum 中间件即可。

例如,在 routes/api.php 文件中添加以下代码:

use Illuminate\Http\Request;

use Illuminate\Support\Facades\Route;

Route::middleware('auth:sanctum')->get('/dashboard', function (Request $request) {

return view('dashboard');

});

现在,只有已经通过身份验证的用户才能访问 /dashboard 路由。

6. 结束语

通过 Laravel Sanctum,我们可以方便地实现 API 的身份验证。通过配置中间件和创建认证路由,我们可以轻松地保护我们的应用程序,并为用户提供安全的访问。

希望本文能够帮助你理解 Laravel Sanctum 的使用方法,并在实际项目中得到应用。

后端开发标签