📜  laravel santum euth - Shell-Bash (1)

📅  最后修改于: 2023-12-03 15:17:12.935000             🧑  作者: Mango

Laravel Sanctum

Laravel Sanctum 是一个轻量级的 API 身份验证包,它为SPA、移动应用和简单的后端API提供了一种简单而优雅的方式来认证请求。 它通过几个简单的步骤来授权任何用户,这样他就可以与API进行交互,而无需提供用户名和密码。

Laravel Sanctum 允许您使用以下身份验证方式进行身份验证:

  • API Token
  • Laravel Session
安装

要使用 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 的所有选项和说明。

使用
简单的 API 认证

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 令牌存储,因此您可以选择最适合您应用程序的身份验证后端。

SPA 认证

除了 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 身份验证解决方案。