API 令牌(API Tokens)
页面摘要: API tokens 可以在不暴露用户凭据的情况下,对访问 Strapi Content API 的外部请求进行身份验证。每个令牌的作用范围限定为一组权限,并在可配置的有效时长后过期。
API tokens 允许外部客户端对访问 Strapi Content API 的请求进行身份验证。若需以编程方式访问管理面板功能,请参阅 Admin Tokens。
API tokens 与 Admin tokens 严格分离:Content API 令牌在 admin 路由上会被拒绝,而 admin 令牌在 Content API 路由上也会被拒绝。
对公开访问优先使用只读令牌,将令牌作用范围限制在所需的最小范围,定期轮换长期有效的令牌,并将其存储在密钥管理器中。
- Plan:Free feature
- Role & permission:Roles > Settings - API tokens 中至少需具备“Access the API tokens settings page(访问 API tokens 设置页面)”权限
- Activation:默认可用
- Environment:在开发与生产环境中均可用

配置
API tokens 的大部分配置选项都可在管理面板中使用,你也可以利用 Strapi 项目的代码来改变 API tokens 的生成方式。
管理面板设置
配置该功能的路径: Settings > Global settings > API Tokens
API Tokens 界面会显示一个表格,列出所有已创建的 content-api 令牌。
从这里,你可以:
- 点击 编辑令牌的名称、说明、类型、有效时长或重新生成令牌。
- 点击 删除令牌。
Strapi 会为你预生成 2 个 API 令牌,一个是 Full access(完全访问)令牌,一个是 Read-only(只读)令牌。由于在未配置加密的情况下令牌只能查看一次,你可能希望在设置加密密钥后重新生成它们,使其可永久查看。
创建新的 API token
-
点击 Create new API Token(创建新的 API Token) 按钮。
-
在 API token 编辑界面中,配置新的 API token:
设置名称 说明 Name 填写 API token 的名称。 Description (可选)填写 API token 的说明。 Token duration 选择令牌有效时长:7 days(7 天)、30 days(30 天)、90 days(90 天),或 Unlimited(无限制)。 Token type 选择令牌类型:Read-only(只读)、Full access(完全访问),或 Custom(自定义)。 -
(可选)对于 Custom(自定义) 令牌类型,通过点击内容类型名称并使用复选框启用或禁用权限,为你的 API 端点定义特定权限。
-
点击 Save(保存) 按钮。新的 API token 会显示在界面顶部,并带有一个复制按钮 。

如果在你的 Strapi 项目中配置了加密密钥(admin.secrets.encryptionKey),新创建和重新生成的 API tokens 将在管理面板中随时可查看。
如果未设置加密密钥,令牌将仅能在创建或重新生成后立即查看一次。
重新生成 API token
- 点击该 API token 的编辑按钮。
- 点击 Regenerate(重新生成) 按钮。
- 在对话框中点击 Regenerate(重新生成) 按钮以确认。
- 复制显示在界面顶部的新 API token。
基于代码的配置
新的 API tokens 是使用一个 salt 生成的。该 salt 由 Strapi 自动生成,并以 API_TOKEN_SALT 的形式存储在环境变量(.env 文件)中。
该 salt 可以自定义:
- 通过更新 你的
/config/admin文件 中apiToken.salt的字符串值 - 或者在项目的
.env文件中创建一个API_TOKEN_SALT环境变量
更改 salt 会使所有现有的 API tokens 失效。
确保 API tokens 在管理面板中可见
要让 API tokens 在管理面板中持久可见,必须在 你的 /config/admin 文件 的 secrets.encryptionKey 下提供加密密钥:
JavaScript
module.exports = ({ env }) => ({
// other config parameters
secrets: {
encryptionKey: env('ENCRYPTION_KEY'),
}
});
TypeScript
export default ({ env }) => ({
// other config parameters
secrets: {
encryptionKey: env('ENCRYPTION_KEY'),
}
});
该密钥用于加密和解密令牌值。没有该密钥,令牌仍可正常使用,但在首次显示后将无法再查看。新的 Strapi 项目会自动生成该密钥。
对于需要以编程方式调用管理面板功能的自动化工作流,请改用 admin tokens。完整文档请参阅 Admin Tokens。
使用
使用 API tokens 可以让你以已验证用户的身份,在 REST API 或 GraphQL API 端点上执行请求。
API tokens 有助于在不管理用户账户或不改动用户与权限(Users & Permissions)插件的情况下,向人员或应用程序授予访问权限。
在向 Strapi 的 REST API 发起请求时,应将 API token 以如下语法添加到请求的 Authorization 头中:bearer your-api-token。
只读 API tokens 只能访问 find 和 findOne 函数。