# 修改登录密码

修改密码会立即撤销你的其他所有登录会话，且全程没有确认提示；本文说明后果、操作步骤和密码规则。

登录密码可以在『账户 > 安全设置』的『登录与认证』标签页修改。

> [!CAUTION]
> 修改成功后，除了发起这次修改的当前会话，你名下其他所有登录会话都会被立即撤销，需要重新登录才能恢复。全程没有任何确认弹窗，事后的安全邮件也不会提到这件事。点击**修改密码**之前，先确认没有需要保留登录状态的其他设备。

## 修改密码的后果

密码修改成功的那一刻，以下情况会同时发生：

| 会发生什么                                                               | 不会发生什么                                             |
| ------------------------------------------------------------------------ | -------------------------------------------------------- |
| 除当前会话外，其他所有登录会话立即被撤销，下一次请求即失败，必须重新登录 | 你正在操作的这台设备不受影响，当前会话被显式保留         |
| 系统异步发送一封"密码已修改"安全邮件，附带修改时间、IP、设备和地理位置   | 邮件不会提到"其他设备已下线"，只报告这次改密操作本身     |
| 撤销同步生效，没有宽限期，唯一恢复方式是在受影响设备上重新登录           | 不影响 API 密钥或 Token 认证，已连接的脚本和集成不受影响 |

## 开始之前

- **需要一次身份验证**：系统通常会要求你重新验证身份，具体方式取决于账户已启用的验证手段（密码、通行密钥、TOTP 或邮箱验证码之一）。如果你最近 1 小时内已经在"安全设置"里验证过身份，这一步会自动跳过。
- **会跳转到账号服务**：点击**修改密码**后，页面会跳转到 Cypacky 账号服务完成身份验证和设置新密码，完成后自动跳回控制台。
- **提前确认在用的设备**：想清楚哪些设备正用这个账号登录，它们都会被要求重新登录。

## 修改密码

1. 在账户页面，进入『安全设置』的『登录与认证』标签页。

   _界面示意图：『登录与认证』标签页里的密码区块：当前状态文字『你的账户已设置登录密码』和右侧的『修改密码』按钮_

2. 在『修改密码』这一行，点击**修改密码**。点击后立即发起流程，没有确认弹窗，也不会预先提示这会登出其他设备。
3. 如果系统要求，完成一次身份验证；最近验证过的话这一步会自动跳过。
4. 在设置新密码的表单里，按下方的密码规则输入新密码，再输入一次进行确认，然后提交。

   _界面示意图：设置新密码表单：新密码与确认密码两个输入框，以及不满足规则时出现的校验提示文字_

5. 提交成功后，页面自动跳回控制台，顶部出现『密码已更新』提示。此时其他设备上的登录会话已经被撤销。

   _界面示意图：控制台右上角弹出的『密码已更新』提示条_

## 密码规则

新密码需要满足以下条件：

| 规则     | 要求                                                                         |
| -------- | ---------------------------------------------------------------------------- |
| 长度     | 8 到 72 个字符                                                               |
| 必须包含 | 至少一个大写字母、一个小写字母、一个特殊字符                                 |
| 不要求   | 数字不是必需项——只满足大小写字母加特殊字符即可通过，界面对这条没有任何提示   |
| 字符范围 | 只支持英文字母、数字和常见符号；空格、大多数 Unicode 符号和 emoji 都会被拒绝 |

72 位的上限来自 bcrypt 哈希算法的字节限制。因为密码只允许 ASCII 字符，字符数就等于字节数。

## 提交被拒绝时

表单会按输入内容原样显示以下提示：

| 界面提示                                       | 触发原因                                                                | 处理方法                         |
| ---------------------------------------------- | ----------------------------------------------------------------------- | -------------------------------- |
| "请输入新密码"                                 | 新密码留空                                                              | 填写符合规则的新密码             |
| "新密码至少 8 位"                              | 少于 8 个字符                                                           | 加长密码                         |
| "新密码最多 72 位"                             | 超过 72 个字符——后端用 bcrypt 哈希，超过 72 字节会拒绝                  | 缩短密码                         |
| "需包含大写字母、小写字母和特殊字符"           | 缺少大写字母、小写字母或特殊字符中的至少一种                            | 补上缺的那一类；数字不计入这一条 |
| "包含不支持的字符，仅允许字母、数字和常见符号" | 密码里出现了不在允许范围内的字符，比如空格、大多数 Unicode 符号或 emoji | 只使用英文字母、数字和常见符号   |
| "两次密码不一致"                               | 两次输入的新密码不同                                                    | 重新输入，确认两次一致           |
| "启动失败，请重试。"                           | 发起修改密码流程的请求失败，通常是网络问题                              | 重试；仍然失败就检查网络连接     |

## 与"忘记密码"重置的区别

"修改密码"和"忘记密码"重置密码是两条不同的路径，后果也不同，容易被混为一谈：

| 对比项                     | 已登录时修改密码                         | 忘记密码重置（未登录，邮箱验证码） |
| -------------------------- | ---------------------------------------- | ---------------------------------- |
| 撤销哪些会话               | 保留发起修改的当前会话，撤销其余所有会话 | 撤销包括当前请求在内的全部会话     |
| 事后邮件是否提到会话被登出 | 不提到                                   | 明确写出"所有已登录设备已自动退出" |

## 相关文档

参考[账户与安全](/zh-cn/account/overview/)，了解账户设置的其他功能。
