> ## Documentation Index
> Fetch the complete documentation index at: https://waffo.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Portal 登录、链接与账户状态

> 为什么商户 Portal 会把你登出、每种邮件链接的有效期多长、为什么重发会被拒绝、密码过期与复用规则是什么、Continue with Google 做了什么，以及哪些账户状态能登录、哪些不能。

本页讨论的是**进入**商户 Portal：会话、邮件链接、密码和账户状态。角色权限、邀请团队成员、
登录历史和两步验证见 [商户 Portal 操作](/docs/zh/support/portal-operations-faq)。首次注册、
沙箱和账户认证路径见
[自助注册、沙箱与账户认证](/docs/zh/support/getting-started-self-serve-faq)。
API 凭证和公钥见
[Portal 自助安全配置](/docs/zh/support/portal-security-config-faq)。

下文引用的每条消息都是 Portal 显示的原文，你可以据此把屏幕上看到的内容对应到原因。

## 为什么 Portal 一直把我登出？

Portal 会话是**基于空闲时间的，并有绝对上限**：

| 规则 | 值 | 对你意味着什么 |
| - | - | - |
| 空闲超时 | 8 小时 | 没有活动的会话会过期。活动会续期。 |
| 续期阈值 | 4 小时 | 只有当会话窗口剩余不足 4 小时时才会延长——所以短时间的一阵活动不会每次点击都重置计时。 |
| 绝对最大值 | 16 小时 | 即使持续活跃的会话也在这里结束。你必须重新登录。 |

会话结束后，请求会返回 `Session expired.`，Portal 把你带回登录页面。无法从 Portal 延长
这些窗口。

另有两件事会在任何计时器之前立即结束会话：

* 你的账户因多次输错密码而被锁定（见下文）；
* 你的角色被管理员更改——见
  [商户 Portal 操作](/docs/zh/support/portal-operations-faq)。

## 每种邮件链接的有效期多长？

四种不同的邮件携带四种不同的链接，它们的生命周期**并不**相同。这是"链接说已过期"工单
最常见的单一来源。

| 邮件 | 链接有效期 | 可复用？ |
| - | - | - |
| 团队邀请（管理员添加了你） | **24 小时** | 否——一次性 |
| 密码重置（"Forgot password"） | **30 分钟** | 否——一次性 |
| 自助注册激活链接（"Magic Link"） | **15 分钟** | 否——一次性 |
| 注册一次性验证码（OTP），当你选择验证码而非链接时 | 短时有效；Portal 显示倒计时 | 否 |

过期或已使用的链接不会静默失败——你会收到具体的消息：

| 你看到什么 | 原因 |
| - | - |
| `Verify email is expired.` | 邀请或重置链接已超过其有效期 |
| `Invalid email verify token.` | 链接被修改、已被消费，或与此账户不匹配 |
| `Sign-up link is invalid or expired.` | 15 分钟的自助激活链接已不可用 |

每种情况的解决方法都一样：请求一个新的。什么都不会丢失——链接只证明是你本人，
不携带你的数据。

## 我请求了新链接但什么都没收到。为什么？

因为这些邮件有一个短暂的每分钟上限，触及它会返回一条消息而不是一封邮件：

> `Reached the message send times limit, please try again later.`

密码重置与邀请 / 注册激活邮件的上限是分开计数的。重发激活链接与邀请使用同一个预算。

所以如果你连续点击了几次 *Resend*，后面的点击被拒绝了，而前面的邮件正在路上。等一分钟，
然后请求一次并检查：

1. 垃圾邮件文件夹；
2. 该地址是否是你的管理员实际邀请的那个；
3. 你的邮件服务器是否在隔离外部发件人。

如果这些都无法解释，请让你的管理员从团队成员列表重新发送，那里也会显示该账户是否仍为
`Pending`。

## 除了复杂度之外，密码规则还有什么？

[商户 Portal 操作](/docs/zh/support/portal-operations-faq) 覆盖了复杂度要求。另有三条规则决定
密码更改是否会被接受：

| 规则 | 行为 |
| - | - |
| 格式 | 至少 8 个非空白字符，至少包含一个大写字母、一个小写字母和一个数字 |
| 复用 | 新密码**不能与你最近三次的密码中任何一个相同** |
| 过期 | 密码在设置后 **90 天**过期 |

消息一一对应：

| 你看到什么 | 含义 |
| - | - |
| `The password format must be at least 8 non-blank characters, at least one uppercase letter, at least one lowercase letter, and at least one number.` | 未满足复杂度 |
| `For security reasons, your new password cannot be the same as your last three passwords` | 触及复用规则——选一个真正新的 |
| `Passwords do not match.` | 两个字段不一致 |
| `Wrong password.` | 你为授权更改而输入的*当前*密码错误 |

复用检查在你登录状态下更改密码时和通过重置链接设置密码时都会运行，所以两条路径都无法
循环回到旧密码。

## Portal 强制把我带到了"设置新密码"页面。发生了什么？

你的密码到了 90 天过期期限。登录成功但返回：

> `Your password has expired. Please set a new password for enhanced security.`

Portal 把你路由到一个强制更改密码的页面。这是不可跳过的——在设置新密码之前，其他任何
Portal 页面都不会加载。新密码必须满足格式规则且不能重复你最近三次的密码，所以请准备好
一个全新的。设置它也会重新开始 90 天计时。

触发这一点的是基于密码的登录。如果你通过 Google 登录，过期检查不会挡在你和 Portal 之间——
但对密码登录而言，你的密码在你更改之前仍处于过期状态。

## 我的账户被锁定了。锁多久？什么能解锁？

错误密码尝试在**一小时**内累计。该窗口内的**第五次**失败会锁定账户：

| 步骤 | 会发生什么 |
| - | - |
| 第 1–4 次失败 | 登录被拒绝，提示 `Username or password wrong.` |
| 第 5 次失败 | 账户状态变为 `Locked`；解锁时间设为 **1 小时后**；你的任何活跃会话都被撤销 |
| 锁定期间 | 登录被拒绝，提示 `Your account is temporarily locked. Please try again later.` |
| 1 小时后 | 账户自行恢复正常 |

值得知道的两个后果：

* 计数器只在当前为 `Active` 的账户上运行，所以针对已经处于 `Pending` 或 `Locked` 的账户
  的失败不会进一步累积惩罚。
* 一次成功登录会清除计数器，所以四次失败后接一次成功会让你从头开始，而不是只剩一次机会。

Portal 中没有提前解锁的按钮。如果你等不了，你账户上的管理员可以通过重置密码路径帮助你——
重置链接独立于锁定计时器。

## 有哪些账户状态？哪些能登录？

只有一种状态能登录。其余每种都产生自己的消息：

| 状态 | 能登录 | Portal 说什么 / 做什么 |
| - | - | - |
| `Pending` | 否 | `The user needs to set the password first.`——邀请从未完成。使用邀请链接，或请求一个新的 |
| `Active` | **是** | 正常登录 |
| `Locked` | 否 | `Your account is temporarily locked. Please try again later.`——临时性，见上文 |
| 任何其他状态 | 否 | `User disabled.` |

在 **Settings → Members** 中，你的团队列表会标注前两种——`Pending` 和 `Active`——
因为这是邀请流程产生的两种状态。显示为其他任何内容的行都是一个不再能登录的账户，
只有管理员能对它采取行动。

因此 `User disabled.` 不是一个 bug 报告：它意味着账户存在，但已不再处于允许登录的状态。
请联系你商户账户上的管理员，而不是重试。

## "Continue with Google" 做了什么？

它同时出现在登录和注册页面。点击它会打开 Google 自己的同意窗口；Waffo 永远不会看到你的
Google 密码。

接下来发生什么取决于已经存在什么：

| 情形 | 结果 |
| - | - |
| 你的 Portal 用户已经以该邮箱地址存在 | 你被登录，并且该 Google 账户被关联用于以后的登录 |
| 你的 Portal 用户存在但仍为 `Pending`（已邀请，从未激活） | Google 对你拥有该地址的证明会激活账户，然后让你登录 |
| 该地址不存在任何 Portal 用户 | 只有在自助注册开放的情况下才能以这种方式创建账户——见 [自助注册](/docs/zh/support/getting-started-self-serve-faq)。未开放时，登录被拒绝 |

两条规则始终适用：

* Google 必须报告该地址为**已验证**。未验证的 Google 地址会被拒绝。
* 上述状态检查仍然运行。Google 登录**不会**绕过被锁定或非活跃的账户。

因为关联建立在邮箱地址上，用 Google 登录和用密码登录会落到*同一个* Portal 用户——
不是第二个账户。如果 Google 登录意外失败，Portal 会在页面内显示原因；重试一次，
然后回退到邮箱和密码。

## 为什么注册表单要我通过"安全校验"？

自助注册会向你输入的地址发送一封真实邮件，所以第一次发送受人机验证挑战保护。
如果没有通过，你会收到：

> `Security check failed. Please refresh and try again.`

刷新页面并提交一次——过时的页面是迄今最常见的原因，因为挑战只在短时间内有效。
该检查在启动注册的那次发送上运行，而不是在之后的每一步。

## 注册表单上的邀请码字段是什么？

它是**可选的**。留空则注册正常进行。

如果你*确实*拿到了一个码但它不被接受，消息是：

> `The invitation code is invalid.`

码是精确匹配的——没有前后空格，大小写正确。如果仍然失败，请询问给你码的人而不是猜测，
并注意去掉码之后你仍然可以注册。

## 我尝试注册，但该地址已有账户。

你会收到 `Email already exists.`，并且不会创建第二个账户。一个邮箱地址对应一个 Portal 用户，
所以：

* 如果你之前设置过密码，用它登录；
* 如果你从未完成邀请，使用邀请链接，或请你的管理员重发；
* 如果你不知道密码，使用 **Forgot password**——无论账户是如何创建的，这对已存在的账户
  都有效。

重复注册不会产生新账户，并且会消耗你的每分钟邮件预算。

## 注册时我可以选择链接或验证码吗？

可以。自助注册支持两种证明你拥有该地址的方式：

| 方式 | 如何工作 | 有效期 |
| - | - | - |
| 激活链接（默认） | 你收到一封带一次性链接的邮件；打开它即激活账户 | 15 分钟 |
| 一次性验证码（OTP） | 你收到一个数字码并输入到表单中 | 短时有效；表单显示倒计时 |

两者证明的是同一件事，所以选择你的邮件环境更适合处理的那一种——邮件在同一设备上到达时
链接路径更方便，否则验证码路径更方便。无论哪种方式，账户只创建一次，每分钟发送上限对两者
都适用。

## 登录成功了，但 Portal 说我的用户没有关联到商户。

消息是：

> `User not set relation merchants. Please contact your administrator to set the relation merchants.`

你的凭证没有问题；只是账户尚未与商户账户关联，所以没有数据可以打开。只有管理员可以
关联它。这最常出现在账户是在正常邀请流程之外创建之后。

## Portal 每次登录都会要求验证码吗？

只有在你的用户开启了两步验证时才会。这一点，包括它在你未启用的情况下出现的情形以及
验证码不到达时该怎么办，见
[商户 Portal 操作](/docs/zh/support/portal-operations-faq) 和
[Portal 自助安全配置](/docs/zh/support/portal-security-config-faq)。

关于这里的预期：验证码通过邮件投递，短时有效，重发它的限流方式与上文的链接邮件精神一致——
重复点击会返回 `OTP rate limit exceeded.` 而不是更多消息。


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.