📅  最后修改于: 2023-12-03 15:02:35.554000             🧑  作者: Mango
Laravel Sanctum 是 Laravel 官方推出的前端无状态身份验证包。它提供了一个简单、轻量、易于使用的 API 身份验证(例如基于 token 的身份验证),让开发者可以使用 Laravel 提供的身份验证服务来保护他们的 API。
Sanctum 是一个完整的身份验证系统,可以使用 API token 或 cookie 作为身份验证令牌,并可以为不同的身份验证方式设置不同的过期时间。
下面将介绍 Laravel Sanctum 的一些特性和用法。
在 Laravel 项目中使用 Laravel Sanctum 唯一的依赖是 Laravel 框架本身。您可以使用 Composer 安装 Laravel Sanctum:
composer require laravel/sanctum
安装 Sanctum 后,您需要运行数据库迁移以生成必要的表:
php artisan migrate
安装并配置 Sanctum 后,您可以在应用程序中使用以下代码创建 Sanctum 声明(此代码应在应用程序的启动中注册):
// config/app.php
'providers' => [
// ...
Laravel\Sanctum\SanctumServiceProvider::class,
];
// app/Http/Kernel.php
use Laravel\Sanctum\Http\Middleware\EnsureFrontendRequestsAreStateful;
protected $middlewareGroups = [
'web' => [
// ...
EnsureFrontendRequestsAreStateful::class,
],
// ...
];
创建 Sanctum Authentication 中间件:
php artisan make:middleware EnsureAuthenticated
use Closure;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
class EnsureAuthenticated
{
public function handle(Request $request, Closure $next)
{
if (! Auth::guard('sanctum')->check()) {
return response()->json([
'message' => 'Unauthorized'
], 401);
}
return $next($request);
}
}
将 EnsureAuthenticated 中间件添加到你项目需要认证接口请求的路由中:
use Illuminate\Support\Facades\Route;
Route::middleware('auth:sanctum')->get('/user', function (Request $request) {
return $request->user();
});