跳到主要内容

重置密码

当你配置了有效的 Email 连接器SMS 连接器 后,密码找回功能会自动为你启用。用户可以通过提供其注册的邮箱地址或手机号来重置密码。

忘记密码用于账户恢复

一旦启用重置密码功能,登录表单下方会显示一个“忘记密码”链接按钮。用户可以点击“忘记密码”链接来启动密码重置流程。

备注:

没有看到“忘记密码”链接?请确保你已配置有效的 EmailSMS 连接器。

  1. 访问登录页面:用户访问登录页面。
  2. 点击忘记密码链接:用户点击“忘记密码”链接。
  3. 输入邮箱 / 手机号:点击“忘记密码”链接后,用户会被重定向到一个新页面,在那里可以输入其注册的邮箱地址或手机号。
  4. 发送验证码:Logto 会向用户提供的邮箱地址或手机号发送验证码,并跳转到验证码验证页面。
  5. 输入验证码:用户输入收到的邮箱或手机验证码。Logto 会验证验证码及与该邮箱地址或手机号关联的用户身份。
  6. 输入新密码:验证码验证成功后,系统会提示用户输入新密码。
  7. 密码重置成功:如果所提供的新密码符合密码策略要求,密码将被成功更新。
  8. 重定向到登录页面:用户将被重定向到登录页面,使用新密码登录。
重置密码流程

登录后修改密码

已认证 (Authentication) 用户可以通过你的应用内账户设置体验更改(或首次设置)密码。参见 账户设置 了解如何通过 Account API 实现此功能。

检查用户是否有密码

用户数据中有一个布尔字段 hasPassword,用于指示该用户当前是否存储有密码凭证。

你可以通过以下方式获取 hasPassword

  • Management API:例如 GET /api/users/:id(包含在用户对象中)
  • 自定义令牌声明:将 hasPassword 注入到 ID / 访问令牌中(这样你的前端可以无需额外 API 调用就分支 UI)

然后调用 Account API 端点来设置或更新密码(请求细节见账户设置指南)。对于从未设置过密码的用户,你不需要(也不应要求)旧密码字段。

提示:

即使你的注册方式要求邮箱 / 手机 / 用户名注册时“设置密码”,通过纯 社交登录 创建的用户默认会跳过密码创建,以减少摩擦。这些用户的 hasPassword = false,直到他们之后主动设置密码。除非你的安全模型要求,否则避免在社交注册后强制立即设置密码——延迟、上下文感知的提示通常转化率更高。

自定义密码策略

自定义密码长度、字符要求和词语限制,以满足你的业务安全需求,同时提供良好的用户体验。这些设置可在 安全性 > 密码策略 部分进行配置。查看 密码策略 文档了解更多信息。

常见问题

如何在密码重置成功后让用户登出?

订阅 PostResetPassword Webhook 事件,以在用户成功重置密码时收到通知。你可以随后触发 登出 操作,使用户当前会话失效并重定向到登录页面。

如何在自定义 UI 上实现密码重置流程?

你可以通过 Logto 的 Management APIAccount API 实现自定义的密码重置流程。详情请查阅 账户设置

你可以创建自托管的密码重置端点,并利用 Logto SDK 发起一次登录请求,将 first_screen 设置为 reset-password。这样会无缝地将用户重定向到密码重置页面。