身份认证
HTTP 身份认证是一种安全机制,用于验证访问 HTTP 服务的用户身份。通过开启此功能,您可以:
- 保护您的 HTTP 服务不被未授权用户访问
- 跟踪和记录用户访问行为
- 根据用户身份提供个性化的服务内容
开启 HTTP 身份认证
- 登录云开发控制台,进入 HTTP 访问服务管理页面
- 在域名关联资源列表中,找到需要身份认证的路径
- 点击对应路径的「身份认证」开关,启用鉴权功能

开启身份认证后的访问行为
开启身份认证后,不同类型的请求会有不同的处理方式:
| 请求类型 | 行为说明 | 适用场景 |
|---|---|---|
| 浏览器直接访问 | 系统自动跳转到登录页,用户登录成功后自动跳转回原页面 | 用户在浏览器中打开链接 |
| 服务端 API 调用 | 未携带有效鉴权信息的请求返回 MISSING_CREDENTIALS 错误码 | 后端服务、脚本调用 API |
| Web 应用 | 需要通过 Web SDK 获取 accessToken 并在请求头中携带 | 前端 Web 应用调用 API |
重要提示
浏览器访问和服务端调用是两种不同的场景:
- 浏览器访问:用户在地址栏输入 URL 或点击链接,系统会自动处理登录跳转
- 服务端调用:代码中通过 HTTP 客户端(如
axios、fetch)发起请求,必须在请求头中携带有效的Authorization参数
在 HTTP 请求中使用鉴权信息
前提条件
在使用以下示例前,请确保:
- 已在云开发控制台开启身份认证功能
- 已配置用户登录方式(如账号密码登录、手机号登录等)
- 用户已完成登录并获取到有效的
accessToken
令牌类型
云开发支持多种令牌类型用于身份认证:
| 令牌类型 | 适用环境 | 用户权限 | 有效期 | 获取方式 |
|---|---|---|---|---|
| Access Token | 客户端/服务端 | 登录用户权限 | 默认 2 小时 | 通过 Web SDK 登录后获取 |
| API Key | 服务端 | 管理员权限 | 长期有效 | 云开发控制台 - API Key 管理页 |
| Publishable Key | 客户端/服务端 | 匿名用户权限 | 长期有效 | 云开发控制台 - API Key 管理页 |
重要提示
- API Key 拥有管理员权限,严禁在客户端使用,仅用于服务端环境
- Publishable Key 可以安全地暴露在浏览器中,用于请求公开访问的资源
- 所有令牌都是身份认证的关键凭证,请妥善保管
- Web 应用
- Node.js / axios
- cURL
const cloudbase = require("@cloudbase/js-sdk");
// 初始化 SDK
const app = cloudbase.init({
env: "您的环境ID" // 替换为您的云开发环境ID
});
const auth = app.auth();
// 用户登录(示例使用账号密码登录)
await auth.signIn({
username: "your username",
password: "your password"
});
// 获取 token
const { accessToken } = await auth.getAccessToken();
// 使用 fetch 发起带鉴权的 HTTP 请求
fetch('https://您的环境ID.service.tcloudbase.com/api/function', {
method: 'POST',
headers: {
'Authorization': `Bearer ${accessToken}`,
'Content-Type': 'application/json'
},
body: JSON.stringify({
name: "云开发",
action: "测试鉴权"
})
})
.then(response => response.json())
.then(data => {
console.log("请求成功:", data);
})
.catch(error => {
console.error("请求失败:", error);
});
const axios = require("axios");
// 使用 axios 发起带鉴权的 HTTP 请求
axios({
url: "https://您的环境ID.service.tcloudbase.com/api/function",
method: "post",
headers: {
'Authorization': `Bearer <APIKEY>`,
'Content-Type': 'application/json'
},
data: {
name: "云开发",
action: "测试鉴权"
}
})
.then(response => {
console.log("请求成功:", response.data);
})
.catch(error => {
console.error("请求失败:", error);
});
# 首先需要通过其他方式获取 accessToken
# 然后使用 cURL 发起请求
curl -X POST https://您的环境ID.service.tcloudbase.com/api/function \
-H "Authorization: Bearer <APIKEY>" \
-H "Content-Type: application/json" \
-d '{
"name": "云开发",
"action": "测试鉴权"
}'