返回

如何从 Laravel Sanctum 请求中获取当前的个人访问令牌?

php

## 获取 Laravel Sanctum 中当前的个人访问令牌

介绍

Laravel Sanctum 是一个轻量级的 Laravel 包,用于通过生成个人访问令牌来处理 API 身份验证。这些令牌可用于代表用户执行操作,而无需提供其密码。本文将指导你如何从 Laravel Sanctum 请求中获取当前的个人访问令牌。

先决条件

  • 安装 Laravel Sanctum。
  • config/sanctum.php 中配置 Sanctum。
  • 创建个人访问令牌。

从请求中获取令牌

要在控制器中从请求中获取令牌,请使用以下步骤:

  1. use Laravel 的 PersonalAccessToken 类。
  2. 调用 PersonalAccessToken::findToken() 方法,传入请求的 bearer 令牌。
  3. 如果令牌不存在或无效,返回 401 未授权响应。
  4. 返回令牌的 JSON 响应。
public function getCurrentToken(Request $request)
{
    $token = PersonalAccessToken::findToken($request->bearerToken());

    if (!$token) {
        return response()->json(['error' => 'Unauthorized'], 401);
    }

    return response()->json(['token' => $token], 200);
}

使用令牌

获取令牌后,你可以使用它来代表用户执行操作。例如,你可以获取用户的详细信息:

$user = $token->tokenable;

提示

  • 确保控制器使用 auth:sanctum 中间件进行保护。
  • PersonalAccessToken::findToken() 方法需要令牌作为参数。
  • 如果令牌无效或未找到,则返回 401 未授权响应。
  • 你可以通过在 config/auth.php 配置文件中设置 sanctum.prefix 来更改个人访问令牌的路由前缀。

常见问题解答

1. 如何创建个人访问令牌?

php artisan sanctum:token

2. 如何获取令牌的详细信息?
使用 $token->tokenable 属性。

3. 如何验证令牌是否有效?
调用 $token->isValid() 方法。

4. 如何撤销令牌?
调用 $token->delete() 方法。

5. 如何更改令牌的路由前缀?
config/auth.php 中设置 sanctum.prefix 选项。

结论

通过获取 Laravel Sanctum 中当前的个人访问令牌,你可以安全地代表用户执行操作。遵循本文中的步骤,你可以轻松地实现这一点,并利用 Sanctum 的强大功能来保护你的 API。