Strapi中使用REST API进行请求认证的指南

作者:API传播员 · 2025-12-17 · 阅读时间:6分钟

在网络安全领域,JSON Web令牌(JWT)是两种常见的身份验证方式,在保护数据和构建安全的Web应用程序中发挥着重要作用。本文将深入探讨如何在Strapi CMS中生成、管理和实现这两种身份验证机制。


先决条件

在开始本教程之前,请确保满足以下条件:

  • 已在本地计算机上安装 Node.js。
  • 已安装 Postman,用于测试API请求。
  • 对 Strapi CMS 有基本的了解(建议参考官方快速指南)。
  • 具备身份验证相关的基础知识。

什么是身份验证?

身份验证是指在允许实体访问资源之前,验证该实体是否为其声称的身份。

身份验证类型

常见的身份验证方法包括:

  • 用户名和密码验证:最常见的形式,用户通过提供用户名和密码访问资源。
  • 双因素/多因素身份验证(2FA/MFA):用户需提供多种验证方式以获得访问权限。
  • 生物识别身份验证:利用用户的生物特征(如指纹、面部或语音)进行验证。
  • 单点登录(SSO):用户通过一次身份验证即可访问多个应用程序(如 Google 账户验证)。
  • 基于令牌的身份验证:通过唯一的令牌(如 API 密钥或 JWT)进行验证,而无需用户名和密码。

什么是 REST API?

REST API 是一种符合 REST(Representational State Transfer)架构风格的应用程序编程接口。它通过 HTTP 请求执行标准的数据库操作(即CRUD:创建、读取、更新和删除),实现资源的交互。


Strapi 中的身份验证策略

在 Strapi 中,主要有两种身份验证策略:API 令牌JWT 令牌

  • API 令牌:内置于 Strapi CMS 中,可在管理面板中生成和管理。适用于无需管理用户账户的场景。
  • JWT 令牌:通过用户和权限插件实现,适用于需要基于用户角色和权限进行资源访问控制的场景。

要发出经过身份验证的请求,必须在请求头中添加带有 JWT 令牌的 Authorization 标头,格式为 Bearer <你的 API 令牌>


了解 API 令牌

什么是 API 令牌?

API 令牌是一个唯一的标识符,授予用户或应用程序访问 API 的权限。它由 API 验证后生成,用于以经过身份验证的身份发出请求。


JSON Web 令牌(JWT)的基础知识

JWT 是一种标准,用于在双方之间安全地传输信息。它通常用于身份验证和授权

JWT 的结构

JWT 由以下三部分组成:

  1. 标头(Header):包含令牌类型(如 JWT)和签名算法(如 HS256)。
  2. 有效载荷(Payload):包含用户的声明信息。
  3. 签名(Signature):通过对编码后的标头、有效载荷和密钥进行签名生成,确保数据的完整性。

API 令牌与 JWT 的优缺点

  • API 令牌无需身份验证即可生成,而生成 JWT 令牌需要身份验证。
  • JWT 令牌是无状态的,不需要服务器端存储,而 API 令牌需要依赖服务器端管理。
  • API 令牌的有效载荷较小,而 JWT 令牌可能因包含更多信息而变得较大。
  • JWT 令牌支持灵活地添加用户信息,而 API 令牌在此方面受到限制。

在 Strapi 中实现 API 令牌

创建 API 令牌

  1. 进入 Strapi 管理面板,导航到 全局设置 > API 令牌
  2. 创建一个新令牌,设置名称、描述(可选)、有效期(如 7 天、30 天等)和类型(完全访问、自定义或只读)。

API 令牌类型

  • 完全访问令牌:允许对所有资源执行任何操作。
  • 自定义令牌:可自定义资源访问权限。
  • 只读令牌:仅允许执行 findfindOne 操作。

使用 Postman 测试 API 令牌

  1. 发出未经身份验证的请求时,默认会被拒绝。
  2. 在请求头中添加 Authorization 标头,格式为 Bearer <API 令牌>,即可成功访问受保护的资源。

在 Strapi 中实现 JWT 令牌

设置用户角色和权限

  1. 用户和权限插件中,配置 公共角色身份验证角色的权限。
  2. 为公共角色设置只读权限,为身份验证角色设置完全访问权限。

生成 JWT 令牌

  1. 用户需通过 /api/auth/local/register 接口注册,提供用户名、电子邮件和密码。
  2. 注册成功后,返回的响应体中包含 JWT 令牌。
  3. 使用 JWT 令牌发出经过身份验证的请求。

API 令牌和 JWT 的最佳实践

为了确保 API 令牌和 JWT 的安全性,建议遵循以下最佳实践:

  • 使用 HTTPS 和 SSL 加密所有 API 通信。
  • 在客户端和服务器端安全存储令牌。
  • 实施速率限制,防止暴力攻击。
  • 定期监控和审计 API 使用情况。
  • 设置令牌过期时间,降低安全风险。

总结

本文详细介绍了在 Strapi 中使用 API 令牌和 JWT 令牌进行身份验证的实现方法。API 令牌适用于简单的身份验证场景,而 JWT 令牌则更适合需要复杂权限管理的场景。在实际应用中,应根据需求选择合适的身份验证策略,并结合安全实践,确保系统的安全性和可靠性。

原文链接: https://strapi.io/blog/guide-on-authenticating-requests-with-the-rest-api