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 的使用方法,并在实际项目中得到应用。