认证设置
为你的站点配置用户认证,以控制对页面和 API 参考的访问权限。将页面设为仅对你的 Mintlify 组织可见,或使用密码、OAuth 或 JWT 认证。
启用认证后,用户需先登录才能访问你的文档。
启用认证后,用户必须先登录才能访问任何内容。你可以将特定页面或分组配置为公开,而将其他页面设为受保护状态。
认证仅适用于托管在自定义域名或 Mintlify 子域名上的站点。例如,docs.example.com 或 example.mintlify.site。使用自定义子路径的站点不支持认证。例如,example.com/docs。
使用下方对比表来选择适合你使用场景的认证方式。请参见功能可用性 了解每种方式如何与其他 Mintlify 功能协同工作。
| 方式 | 适用场景 | 方案 | 基于用户组的访问控制 | API 操作台预填 | 个性化 |
|---|---|---|---|---|---|
| Password | 简单的共享访问,无需按用户跟踪 | Pro 或 Enterprise | — | — | — |
| Private authentication | 面向 Mintlify 组织成员的内部文档 | 所有方案 | — | — | — |
| OAuth 2.0 | 已有身份提供方或 SSO,且需要按用户会话 | Enterprise | ✓ | ✓ | ✓ |
| JWT | 自定义认证后端或嵌入在自有登录后的文档 | Enterprise | ✓ | ✓ | ✓ |
密码认证仅提供访问控制,不支持用户级功能,例如基于用户组的访问控制或 API 操作台中的预填数据。
密码前提条件
- 你的安全策略允许在多个用户之间共享密码。
密码设置
创建密码。
- 在控制台中,前往 Authentication。
- 在 Authentication method 部分,将站点可见性设置为 Private。
- 点击 Password。
- 输入一个安全的密码。
- 点击 Save changes。
保存后,你的网站会重新部署。部署完成后,任何访问你站点的用户都必须输入该密码才能访问你的内容。
分发访问权限。
以安全方式将密码和文档 URL 分享给获授权的用户。
密码示例
你将文档托管在 docs.foo.com,只需要基础访问控制,而不需要跟踪单个用户。你希望阻止公众访问,同时保持设置简单。
在控制台中创建一个强密码,并将凭证分享给获授权的用户。
在使用认证时,所有页面默认都需要通过认证才能访问。你可以在页面或分组级别通过 public 属性将特定页面设置为无需认证即可访问。
要将页面设为公开,请在该页面的 frontmatter 中添加 public: true。
---
title: "公开页面"
public: true
---要将某个分组中的所有页面设为公开,请在 docs.json 的 navigation 对象中,该分组名称下添加 "public": true。
{
"navigation": {
"groups": [
{
"group": "公开组",
"public": true,
"icon": "play",
"pages": [
"quickstart",
"installation",
"settings"
]
},
{
"group": "私有组",
"icon": "pause",
"pages": [
"private-information",
"secret-settings"
]
}
]
}
}当你使用 OAuth 或 JWT (JSON Web Token) 进行认证时,可以将特定页面仅限于某些用户组访问。若希望不同用户根据其角色或属性查看不同内容,这将非常有用。
通过在认证过程中传递的用户数据来管理 groups。详见 用户数据格式。
{
"groups": ["admin", "beta-users"],
"expiresAt": 1735689600
}使用 frontmatter 中的 groups 属性来指定哪些 groups 可以访问特定页面。
---
title: "管理员控制台"
groups: ["admin"]
---用户必须至少属于所列的一个 groups 才能访问该页面。如果用户在不具备所需分组的情况下尝试访问页面,将会收到 404 错误。
- 默认情况下,所有页面都需要认证。
- 具有
groups属性的页面仅对属于这些 groups 的已认证用户可访问。 - 没有
groups属性的页面对所有已认证用户可访问。 - 具有
public: true且没有groups属性的页面对所有人可访问。
---
title: "Public guide"
public: true
---当使用 OAuth 或 JWT 认证时,系统会返回用户数据,用于控制会话时长、基于用户组成员关系的访问控制,以及内容个性化。
type User = {
host?: string;
expiresAt?: number;
groups?: string[];
content?: Record<string, any>;
apiPlaygroundInputs?: {
server?: Record<string, string>;
header?: Record<string, unknown>;
query?: Record<string, unknown>;
cookie?: Record<string, unknown>;
path?: Record<string, unknown>;
};
};hoststringJWT 认证时必填。 你的文档站点的主机名。该字符串必须与你部署文档的 domain 完全一致。Mintlify 会验证 JWT 的 host 是否与发起请求的 host 匹配,以防止令牌在不同站点之间被重复使用。
expiresAtnumber会话过期时间,以自 epoch 起算的秒数表示。当当前时间超过该值时,用户必须重新完成认证。
exp 声明,后者用于决定 JWT 何时被视为无效。出于安全考虑,应将 JWT 的 exp 声明设置为较短的时长 (10 秒或更少) 。使用 expiresAt 来表示实际会话时长 (从数小时到数周) 。groupsstring[]用户所属用户组的列表。frontmatter 中带有匹配 groups 的页面对该用户可访问。
示例:具有 groups: ["admin", "engineering"] 的用户可以访问带有 admin 或 engineering 用户组标记的页面。
contentRecord<string, any>可在 MDX 页面中通过 user 变量访问的自定义数据,用于个性化内容。
apiPlaygroundInputsobject使用用户特定的值预填 API 操作台中的字段。当用户完成认证后,这些值会填充到 API 操作台中对应的输入字段。用户可以覆盖预填的值,其修改会持久保存在本地存储中。
Mintlify 只会应用与当前端点的安全方案匹配的值。
Show Hide properties
headerRecord<string, unknown>要预填的 Header 值,以 Header 名称作为 key。
queryRecord<string, unknown>要预填的查询参数值,以参数名称作为 key。
cookieRecord<string, unknown>要预填的 Cookie 值,以 Cookie 名称作为 key。
serverRecord<string, string>要预填的服务器变量值,以变量名称作为 key。
pathRecord<string, unknown>要预填的路径参数值,以参数名称作为 key。
启用认证后,部分功能的行为会有所不同,或可能不可用。
| 功能 | 公开 | 完全认证 (所有页面受保护) | 部分认证 (部分页面公开) |
|---|---|---|---|
| llms.txt 和 llms-full.txt | 完全支持 | 需要通过认证后才能访问,因此 AI 工具可能无法访问这些文件 | 可公开访问,仅反映公开页面 |
| MCP 服务器 | 完全支持 | 连接时需要认证 | 公开页面无需认证即可使用,受保护页面则需要认证 |
| Markdown 导出 | 完全支持 | 完全支持,尊重用户分组 | 完全支持,尊重用户分组 |
| PDF 导出 | 完全支持 | 完全支持,尊重用户分组。已认证页面在导出时会包含图片和资源。 | 完全支持,尊重用户分组。已认证页面在导出时会包含图片和资源。 |
| 搜索 | 完全支持 | 完全支持,尊重用户分组 | 完全支持,尊重用户分组 |
| AI 助手 | 完全支持 | 完全支持,尊重用户分组 | 完全支持,尊重用户分组 |
| skill.md | 完全支持 | 不支持 | 不支持 |
| 站点地图 | 完全支持 | 需要通过认证后才能访问,但会排除 groups 中的页面 | 需要通过认证后才能访问,但会排除 groups 中的页面 |
| robots.txt | 完全支持 | 需要通过认证后才能访问 | 需要通过认证后才能访问 |