尧图精选

ToolJet 密码登录(Password Login)配置与重置密码完全指南

🕒 发布时间:2026/9/12 16:13:51 📁 来源:尧图网络
ToolJet 密码登录Password Login配置与重置密码完全指南【免费下载链接】ToolJetOpen-source foundation of ToolJet AI - the enterprise app generation platform for internal tools, dashboards, business applications, workflows and AI agents. Build visually, from a prompt, or from Claude Code, Codex and Cursor over MCP 项目地址: https://gitcode.com/GitHub_Trending/to/ToolJet导读本文以 ToolJet 官方文档《Password Login》password-login.md为骨架系统讲解 ToolJet 中邮箱 密码认证方式的完整生命周期从工作区级启用/禁用、错误重试次数限制到用户自助重置密码与 Super Admin 代重置密码的两种完整路径。同时结合 server 与 frontend 源码深入揭示密码校验、重试计数、令牌过期等底层实现原理帮助你在自托管或企业部署场景中准确配置、排查与加固密码登录。一、什么是 Password LoginPassword Login 是 ToolJet 最基础的一种用户认证方式用户使用注册邮箱 密码完成登录。在 ToolJet 中它属于表单登录form login的范畴与 Google、GitHub、OIDC、SAML、LDAP 等 SSO 登录方式并列构成用户进入工作区的第一道身份验证入口。从源码结构看ToolJet 的认证逻辑统一收口在 server/src/modules/auth 模块controller.ts暴露authenticate、forgot-password、reset-password等路由service.ts负责登录编排与忘记/重置密码流程util.service.ts中的validateLoginUser()是所有密码登录请求的公共校验入口重试限制、密码比对都在这里完成见 util.service.ts。关键特性速览特性默认值说明启用状态所有工作区默认启用管理员可在工作区设置中关闭错误重试上限5 次超过后账号的密码登录被锁定需走重置密码流程重试上限可配PASSWORD_RETRY_LIMIT覆盖默认 5 次重试限制可关闭DISABLE_PASSWORD_RETRY_LIMITtrue关闭重试次数锁定重置链接有效期LINK_EXPIRY_MINUTES0 或未设置表示链接永不过期二、启用/禁用 Password Login密码登录在所有工作区默认启用只有拥有管理员权限的用户才能对其进行开关操作。操作步骤登录 ToolJet进入Workspace Settings工作区设置在左侧导航选择SSO进入General Settings常规设置分区找到Password Login开关切换即可启用或禁用。文档原文配图位于/img/sso/general/password-login-new.png展示的是 General Settings 中 Password Login 开关的界面位置。与其他登录方式的关系密码登录开关并非孤立存在。在 server/src/modules/login-configs/service.ts 中可以看到自动 SSO 登录Automatic SSO login功能只有在密码登录被禁用、且仅启用了一个 SSO 登录方式时才能开启否则后端会抛出错误。也就是说密码登录开启时用户登录页会显示邮箱密码表单密码登录关闭时用户只能通过已启用的 SSO 方式登录此时才具备启用自动 SSO 登录的前提。三、重试次数限制Retry Limits为防止暴力破解密码ToolJet 在用户连续输错密码达到一定次数后会禁用该用户的密码认证方式迫使其通过忘记密码流程重置密码后才能再次登录。默认行为默认允许5 次重试超过上限后登录接口返回UnauthorizedException提示信息为Maximum password retry limit reached, please reset your password using forgot password option相关环境变量环境变量作用默认值DISABLE_PASSWORD_RETRY_LIMIT设为true时关闭重试次数限制未设置限制生效PASSWORD_RETRY_LIMIT覆盖允许的重试次数5配置示例.env# 关闭重试次数限制 DISABLE_PASSWORD_RETRY_LIMITtrue # 或调整重试次数为 10 次 PASSWORD_RETRY_LIMIT10源码级原理在 server/src/modules/auth/util.service.ts 中validateLoginUser()的校验逻辑清晰可循const passwordRetryConfig this.configService.getstring(PASSWORD_RETRY_LIMIT); const passwordRetryAllowed passwordRetryConfig ? parseInt(passwordRetryConfig) : 5; if ( this.configService.getstring(DISABLE_PASSWORD_RETRY_LIMIT) ! true user.passwordRetryCount passwordRetryAllowed ) { throw new UnauthorizedException( Maximum password retry limit reached, please reset your password using forgot password option ); } if (!(await bcrypt.compare(password, user.password))) { await this.userRepository.update(user.id, { passwordRetryCount: user.passwordRetryCount 1 }); throw new UnauthorizedException(Invalid credentials); }要点解读重试次数持久化在用户表的password_retry_count字段中见 user.entity.ts因此即使重启服务计数依然保留密码使用bcrypt.compare进行哈希比对数据库不存明文密码只有密码校验失败才递增计数校验成功后计数会在后续登录流程中被重置为 0见 service.ts通过忘记密码或重置密码成功后passwordRetryCount同样会被清零见 service.ts。四、用户自助重置密码Forgot Password当用户忘记密码时可自行通过Forgot Password流程重置无需管理员介入。操作步骤在登录页面点击Forgot Password输入与账号关联的注册邮箱点击Send a reset link按钮系统向该邮箱发送一封包含重置链接的邮件点击邮件中的链接跳转到密码重置页面按页面提示设置新密码即可用新密码登录。文档原文配图/img/sso/general/forgot-password.png展示的是 Forgot Password 表单界面。前端实现前端页面位于 frontend/src/ForgotPassword/ForgotPasswordPage.jsx其核心交互为提交前先调用validateEmail()做本地邮箱格式校验非法邮箱提示Invalid Email校验通过后调用authenticationService.forgotPassword(email)发起请求无论邮箱是否注册页面都会弹出提示Please check your email/inbox for the password reset link引导用户查看收件箱。后端实现与安全设计后端forgotPassword流程位于 service.tsasync forgotPassword(email: string, redirectTo?: string, orgSlug?: string) { const user await this.userRepository.findByEmail(email); if (!user) { // No need to throw error - To prevent Username Enumeration vulnerability return; } if (user.status USER_STATUS.ARCHIVED) { throw new BadRequestException(You have been archived from this instance. Contact super admin to know more); } const forgotPasswordToken uuid.v4(); const linkExpiryMinutes parseInt(process.env.LINK_EXPIRY_MINUTES || 0, 10); const forgotPasswordTokenExpiry !isNaN(linkExpiryMinutes) linkExpiryMinutes 0 ? new Date(Date.now() linkExpiryMinutes * 60 * 1000) : null; await this.userRepository.updateOne(user.id, { forgotPasswordToken, forgotPasswordTokenExpiry }); // ...触发 SEND_PASSWORD_RESET_EMAIL 邮件事件 }安全设计要点防用户枚举邮箱不存在时直接静默返回不抛出任何错误避免攻击者通过该邮箱未注册的提示探测有效账号与前端统一提示查看收件箱配合形成双重保护一次性随机令牌重置令牌使用uuid.v4()生成随邮件发送令牌有效期可配LINK_EXPIRY_MINUTES环境变量控制重置链接有效期分钟0或未设置表示链接永不过期令牌与过期时间分别持久化在forgot_password_token与forgot_password_token_expiry字段见 user.entity.ts重置链接过期校验在resetPassword与verifyResetToken中若forgotPasswordTokenExpiry已过返回GoneException(Reset password link has expired. Please request a new one.)见 service.ts。重置密码的密码规则设置新密码时服务端会调用validatePasswordServer()见 server/src/helpers/utils.helper.ts校验密码强度社区版CE/ 默认规则密码非空长度至少 5 个字符最长 100 字符企业版EE 启用复杂度规则ENABLE_PASSWORD_COMPLEXITY_RULEStrue必须匹配PASSWORD_REGEX即12–24 个字符可由字母、数字及!#$%^*()_-{}[]:;,.?/\|等特殊字符组成。因此若部署了 EE 并开启复杂度规则重置后的密码必须满足 12–24 位的要求否则会被拒绝。五、Super Admin 为用户重置密码除了用户自助重置工作区的Super Admin也可以在管理后台直接为用户重置密码。适合用户邮箱不可用、忘记邮箱或自助流程受阻等场景。操作步骤以 Super Admin 身份进入Settings设置打开All Users所有用户列表找到需要重置密码的用户点击用户名右侧的kebab 菜单三个点图标选择Reset Password弹出重置对话框对话框中提供两种重置方式见下文。文档原文配图/img/sso/general/auto-password.png与/img/sso/general/create-password.png分别展示了两种重置方式的弹窗界面。方式一自动生成密码Automatically Generate Password选择该选项后系统自动为用户生成一个新密码点击Reset按钮完成重置新密码会直接显示在弹窗中Super Admin 复制该密码并通过安全渠道如企业 IM、电话私下交给用户。该方式适合希望一次性临时密码的场景用户拿到密码后可登录并在个人设置中自行修改。方式二手动创建密码Create Password选择该选项后输入为用户指定的新密码点击Reset按钮即完成重置新密码同样需要满足服务端validatePasswordServer()的密码规则CE 至少 5 位EE 开启复杂度规则后为 12–24 位。该方式适合管理员已知用户偏好、希望直接设置固定密码的场景。注意事项两种方式都会在服务端重置该用户的passwordRetryCount为 0因此被重试限制锁定的账号在管理员重置密码后即可恢复登录重置密码操作会清除用户的forgotPasswordToken与forgotPasswordTokenExpiry避免旧的重置链接继续生效只有Super Admin拥有此权限普通管理员Admin不具备。六、总结与最佳实践完整生命周期回顾密码登录在 ToolJet 中的完整链路为工作区启用 → 用户邮箱密码登录 → 连续输错触发重试锁定 → 用户自助 Forgot Password 或 Super Admin 代重置 → 重试计数清零恢复登录。每一环都有对应的前端页面与后端接口支撑。生产环境建议保持重试限制开启默认 5 次限制能有效抵御暴力破解除非在内网或特殊场景否则不建议设置DISABLE_PASSWORD_RETRY_LIMITtrue合理设置链接有效期通过LINK_EXPIRY_MINUTES限制重置链接的有效期例如30降低令牌泄露风险生产环境不要留空永不过期企业版建议开启密码复杂度规则设置ENABLE_PASSWORD_COMPLEXITY_RULEStrue后强制密码为 12–24 位混合字符显著提升账号安全性自动化运维无论是重试锁定还是令牌过期都可通过 API 走 Forgot Password 流程自助恢复无需频繁请求 Super Admin 介入。延伸阅读密码登录接口实现server/src/modules/auth/controller.ts登录编排与令牌处理server/src/modules/auth/service.ts登录校验核心逻辑server/src/modules/auth/util.service.ts用户实体字段定义含重试计数、重置令牌字段server/src/entities/user.entity.ts密码规则校验函数server/src/helpers/utils.helper.ts前端忘记密码页frontend/src/ForgotPassword/ForgotPasswordPage.jsx前端重置密码页frontend/src/ResetPassword/ResetPasswordPage.jsx【免费下载链接】ToolJetOpen-source foundation of ToolJet AI - the enterprise app generation platform for internal tools, dashboards, business applications, workflows and AI agents. Build visually, from a prompt, or from Claude Code, Codex and Cursor over MCP 项目地址: https://gitcode.com/GitHub_Trending/to/ToolJet创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
上一篇/下一篇内容由系统自动关联 返回资讯列表 →