📅  最后修改于: 2023-12-03 15:17:12.935000             🧑  作者: Mango
Laravel Sanctum 是一个轻量级的 API 身份验证包,它为SPA、移动应用和简单的后端API提供了一种简单而优雅的方式来认证请求。 它通过几个简单的步骤来授权任何用户,这样他就可以与API进行交互,而无需提供用户名和密码。
Laravel Sanctum 允许您使用以下身份验证方式进行身份验证:
要使用 Sanctum,请使用 Composer 进行安装:
composer require laravel/sanctum
安装后,您需要将 Sanctum 的服务提供程序添加到config/app.php
文件中。
'providers' => [
// Other service providers...
Laravel\Sanctum\SanctumServiceProvider::class,
],
安装 Sanctum 后,您需要发布 Sanctum 的配置文件。这将添加一个名为config/sanctum.php
的文件到您的 Laravel 应用程序中。
php artisan vendor:publish --provider="Laravel\Sanctum\SanctumServiceProvider"
该文件包含用于配置 Sanctum 的所有选项和说明。
Laravel Sanctum 可以轻松地使您的 API 身份验证工作流程更加流畅。 一旦安装 Sanctum ,您可以通过向任何用户分配 API 令牌来为他们签名 API 请求。 生成 API 令牌很简单:
$user->createToken('token-name');
然后,您可以将此 API 令牌与每个请求一起发送。 例如,在 JavaScript 应用程序中,您可以将令牌设置为 AXIOS 的默认标头:
window.axios.defaults.headers.common['Authorization'] = `Bearer ${token}`;
Laravel 将使用您的令牌变量来验证用户身份,并使用您选择的身份验证后端执行身份验证。 Sanctum 支持 Laravel 的会话身份验证引擎,其中包括单独的 API 令牌存储,因此您可以选择最适合您应用程序的身份验证后端。
除了 API 令牌身份验证外,Sanctum 还支持向您的应用程序授予“基于 Cookie”的 API 访问。 此流程可用于 SPA 和移动应用程序中,其中您可以使用单个登录状态始终授权对 API 的访问。
要从 Sanctum 中使用基于 Cookie 的身份验证,请执行以下操作:
首先,您需要在Sanctum
配置文件中将 stateful 配置设置为 'cookie' 。
'stateful' => [
'driver' => 'cookie',
'provider' => 'users',
],
然后,您可以将CreateFreshApiToken
中间件添加到应用程序的 web 中间件组中:
protected $middlewareGroups = [
'web' => [
// ...
\Laravel\Sanctum\Http\Middleware\EnsureFrontendRequestsAreStateful::class,
],
// ...
];
此中间件会检查请求数据是否来自应用程序的前端,如果是,则将 CSRF 令牌添加到响应中。 该令牌将存储在 cookie 中,以便在执行 SPA 渲染时可以使用。
最后,在您的前端应用程序中,您可以使用 Laravel 的@csrf
指令将 CSRF 令牌添加到所有的盖板形式中。 这将确保每个请求都可以通过 Sanctum 的身份验证工作流程进行验证。
<form action="/some-endpoint" method="POST">
@csrf
<!-- Form Contents -->
</form>
Laravel Sanctum 是一个非常简单、轻量级但又功能强大的 API 身份验证包。 无论您是构建现代 SPA 应用程序还是构建 API,它都是一个必不可少的工具。 无论您选择什么类型的身份验证,使用 Laravel Sanctum 都可以为您提供完整的 API 身份验证解决方案。