📅  最后修改于: 2023-12-03 15:17:12.922000             🧑  作者: Mango
本文将介绍 Laravel Sanctum,一个为 Laravel 应用程序提供轻量级身份验证系统的库。Laravel Sanctum 通过使用 Laravel 8.x 中的 Cookie 会话驱动来验证用户。它简化了为 SPA、移动应用程序等前后端分离的应用程序设置 API 身份验证的过程。
参考文档:https://laravel.com/docs/8.x/sanctum
在 Laravel 项目中使用 Composer 包管理器安装 Laravel Sanctum:
composer require laravel/sanctum
php artisan migrate
config/app.php
文件中添加以下服务提供者:'providers' => [
// ...
Laravel\Sanctum\SanctumServiceProvider::class,
],
app/Http/Kernel.php
文件中的 $routeMiddleware
数组中添加以下内容:'auth.sanctum' => \Laravel\Sanctum\Http\Middleware\EnsureFrontendRequestsAreStateful::class,
php artisan vendor:publish --provider="Laravel\Sanctum\SanctumServiceProvider"
以下是使用 Laravel Sanctum 进行身份验证的基本步骤:
App\Providers\RouteServiceProvider
类的 boot
方法中调用 Route::middleware
方法以应用 Sanctum 的身份验证中间件:use Laravel\Sanctum\Sanctum;
public function boot()
{
// ...
Sanctum::routes();
}
web
路由上定义登录和注销路由:use Laravel\Sanctum\Http\Controllers\CsrfCookieController;
Route::group(['middleware' => 'web'], function () {
// ...
Route::post('/login', [LoginController::class, 'login']);
Route::post('/logout', [LoginController::class, 'logout']);
Route::get('/sanctum/csrf-cookie', CsrfCookieController::class);
});
use Laravel\Sanctum\HasApiTokens;
public function login(Request $request)
{
// 验证用户,并在验证成功后为用户创建令牌
$user = User::where('email', $request->email)->first();
if ($user && Hash::check($request->password, $user->password)) {
$token = $user->createToken('API Token')->plainTextToken;
return response()->json(['token' => $token], 200);
}
return response()->json(['message' => 'Invalid credentials'], 401);
}
public function logout(Request $request)
{
// 撤销用户的令牌
$request->user()->tokens()->delete();
return response()->json(['message' => 'Logged out successfully'], 200);
}
auth:sanctum
中间件:Route::group(['middleware' => 'auth:sanctum'], function () {
// 在这里定义需要进行身份验证的路由
});
通过 Laravel Sanctum,我们能够轻松地为前后端分离的应用程序设置 API 身份验证。它提供了简单的方法来处理用户登录和令牌生成,让我们能够快速构建安全的应用程序。
以上是关于 Laravel Sanctum 的简介和基本用法。如需了解更多信息,请参考官方文档。