ToolJet 自助注册(Self Sign-Up)配置指南:实例级与工作区级启用详解

发布时间:2026/11/5 5:45:51

ToolJet 自助注册(Self Sign-Up)配置指南:实例级与工作区级启用详解 ToolJet 自助注册Self Sign-Up配置指南实例级与工作区级启用详解【免费下载链接】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/ToolJetToolJet 的 Sign-Up自助注册功能允许管理员通过公开的注册 URL 让用户直接注册加入无需逐一发送邀请。本文基于 ToolJet 3.0.0-LTS 版本文档结合后端源码onboarding/service.ts、login-configs/service.ts详解 Self-Hosted 版本中如何在**实例级Instance Level与工作区级Workspace Level**启用注册、配置允许域名、理解注册后的角色分配与底层校验逻辑帮助 Super Admin 与 Workspace Admin 快速落地用户自主加入的接入方案。一、自助注册机制概览在 ToolJet 中自助注册self sign-up让用户通过注册 URL 自行创建账号替代传统的管理员邀请 激活链接流程。对于Self-Hosted 版本启用注册可在两个层级进行配置层级操作角色用户注册后分配的角色注册入口实例级Instance LevelSuper Admin新建个人工作区Personal Workspace并赋予该用户Workspace Admin角色https://app.corp.com/signup工作区级Workspace LevelAdmin加入对应工作区并赋予该用户End User角色https://app.corp.com/login/nexus登录页含注册入口两个层级默认情况下Enable Signup开关均为关闭状态需要管理员显式开启。此外两个层级都支持通过Allowed Domains允许域名限制可注册的邮箱域名若不填写任何域名则任何持有注册 URL 的人都能注册。从数据模型看注册开关对应 organization.entity.ts 中的enable_sign_up字段enableSignUp而允许域名则对应password_allowed_domains/password_restricted_domains字段。实例级设置则存储在 Instance Settings 中见 instance-settings/constants/index.ts 中的ENABLE_SIGNUP、ALLOWED_DOMAINS、ALLOW_PERSONAL_WORKSPACE等枚举键。二、实例级启用注册Instance Level所需角色Super AdminSuper Admin 可在实例级启用注册。当用户通过实例级自助注册加入实例时系统会自动为该用户创建一个新的个人工作区Personal Workspace并为其分配Workspace Admin 角色。操作步骤点击仪表盘左下角的设置图标⚙️。进入Settings Manage instance settings。 示例 URLhttps://app.corp.com/instance-settings/manage-instance-settings确认已允许个人工作区Allow personal workspace。此开关位于实例设置中对应后端INSTANCE_USER_SETTINGS.ALLOW_PERSONAL_WORKSPACE见 instance-settings/constants/index.ts。只有允许个人工作区用户实例级自助注册后系统才能为其创建独立的个人工作区。进入Instance login标签页。 示例 URLhttps://app.corp.com/instance-settings/instance-login填写Allowed domains允许域名。可输入多个域名以逗号分隔。例如corp.com, example.com, tooljet.com。如果不填写允许域名则任何拥有注册 URL 的人都可以注册到该实例。打开Enable signup开关。默认情况下该开关是关闭的。点击页面底部的Save changes按钮保存配置。保存后用户即可在 ToolJet 部署 URL 上直接注册 示例 URLhttps://app.corp.com/signup注册页面包含姓名Name、邮箱Email、密码Password三个必填项同时提供 Google 等已启用 SSO 的一键注册入口。实例级注册的源码级原理从后端实现看实例级注册开关的默认值直接受环境变量控制。在 instance-settings/constants/index.ts 的getDefaultInstanceSettings()中[INSTANCE_SYSTEM_SETTINGS.ENABLE_SIGNUP]: process.env.DISABLE_SIGNUPS false ? true : false,即只有显式设置DISABLE_SIGNUPSfalse时实例级注册默认才为开启状态否则默认关闭。同理在 login-configs/service.ts 的getInstanceSSOConfigs()中form: { enable_sign_up: this.configService.getstring(DISABLE_SIGNUPS) ! true, enabled: true, }, enableSignUp: this.configService.getstring(DISABLE_SIGNUPS) ! true,可以看到实例级注册开关最终读取的是DISABLE_SIGNUPS环境变量。用户提交注册请求后后端入口OnboardingService.signup()见 onboarding/service.ts会依次执行如下校验首先检查DISABLE_SIGNUPS是否为true是则直接抛出NotAcceptableException拒绝注册当请求未携带organizationId即实例级注册时调用validatePasswordDomain(email, undefined, undefined, ...)对邮箱域名进行校验不匹配则抛出ForbiddenExceptionThis login method is not available for your domain...校验通过后若用户不存在则在默认工作区或新工作区中创建用户createUserInDefaultWorkspace/createUserInWorkspace。三、工作区级启用注册Workspace Level所需角色AdminWorkspace Admin 可在工作区级启用注册。当用户通过工作区级自助注册加入时该用户会被加入对应工作区并分配End User 角色即普通成员不具备管理权限。操作步骤进入Workspace settings Workspace login。 示例 URLhttps://app.corp.com/nexus/workspace-settings/workspace-login填写Allowed domains允许域名。同样支持多个域名以逗号分隔例如tooljet.com, tooljet.ai, corp.com。如果不填写允许域名则任何拥有登录 URL 的人都可以注册到该工作区。打开Enable signup开关。默认情况下该开关是关闭的。点击Save changes按钮保存配置。复制Login URL并分享给用户。工作区登录 URL 的格式为https://app.corp.com/login/nexus其中nexus是该工作区的 slug。保存后用户打开该登录 URL 即可看到登录页面页面上会显示Sign-Up 选项用户可从登录页导航到注册页并自助注册。工作区级注册的源码级原理工作区级注册开关对应 organization.entity.ts 中的enable_sign_up字段。管理员通过LoginConfigsService.updateGeneralOrganizationConfigs()见 login-configs/service.ts更新配置该方法接收并落库的字段包括const { domain, passwordAllowedDomains, passwordRestrictedDomains, enableSignUp, inheritSSO, automaticSsoLogin } params; const updatableParams { domain, passwordAllowedDomains, passwordRestrictedDomains, enableSignUp, inheritSSO, automaticSsoLogin, };其中enableSignUp即注册开关passwordAllowedDomains/passwordRestrictedDomains为允许/限制的邮箱域名。入参校验定义在 dto/login-configs.dto.ts 的LoginConfigsUpdateDto中domain为可选字符串且最长 250 字符enableSignUp、automaticSsoLogin、inheritSSO均为可选布尔值。当用户通过工作区注册链接提交注册时OnboardingService.signup()会走带organizationId的分支见 onboarding/service.tsif (organizationId) { signingUpOrganization await this.organizationRepository.get(organizationId); ... const { enableSignUp, passwordAllowedDomains, passwordRestrictedDomains } signingUpOrganization; if (!enableSignUp) { throw new ForbiddenException(Workspace signup has been disabled. Please contact the workspace admin.); } if (!(await validatePasswordDomain(email, passwordAllowedDomains, passwordRestrictedDomains, ...))) { throw new ForbiddenException(This login method is not available for your domain...); } }也就是说工作区级注册会先校验工作区自身的enableSignUp开关再校验邮箱域名是否命中passwordAllowedDomains白名单、是否被passwordRestrictedDomains黑名单拦截。对于 ToolJet CE社区版当用户通过实例级 URL 注册且存在默认工作区时还会额外校验默认工作区的enableSignUp是否开启见signup()中isCE !defaultWorkspace.enableSignUp分支未开启同样抛出ForbiddenException。四、实例级与工作区级如何协同两种层级的注册开关并非互斥而是作用于注册请求的不同阶段带工作区上下文organizationId的注册优先校验目标工作区的enableSignUp与域名配置注册成功后用户加入该工作区并获得End User角色不带工作区上下文的注册实例级 URL/signup校验实例级DISABLE_SIGNUPS/ENABLE_SIGNUP设置与实例级允许域名注册成功后系统为该用户创建个人工作区并授予Workspace Admin角色。因此典型的使用场景是实例级开启注册 允许个人工作区让员工访问公司 ToolJet 域名即可自助开通个人工作区同时各工作区 Admin 按需开启工作区级注册配合工作区专属的 Login URL/login/workspace-slug定向吸纳成员。两者都可通过 Allowed Domains 将注册范围限定在企业邮箱域名内从源头拦截外部账号。五、常见问题与排障基于 onboarding/service.ts 与 login-configs/service.ts 中的校验逻辑以下是自助注册过程中可能遇到的典型报错与处理建议现象 / 报错原因处理建议实例级注册被拒NotAcceptableException环境变量DISABLE_SIGNUPStrue在部署环境中设置DISABLE_SIGNUPSfalse或在实例设置中开启Enable signupWorkspace signup has been disabled. Please contact the workspace admin.目标工作区的enableSignUp开关未开启由 Workspace Admin 在Workspace settings Workspace login中开启Enable signupThis login method is not available for your domain. Please contact admin or try another method.注册邮箱域名不在允许列表中或被限制域名拦截检查 Allowed domains 配置实例级或工作区级将用户邮箱域名加入白名单或移除黑名单中的域名实例级注册提示默认工作区禁止注册CE 版默认工作区Default Workspace的enableSignUp未开启由 Super Admin 在默认工作区的工作区设置中开启注册开关注册后未进入预期工作区使用了实例级注册 URL系统创建了个人工作区若目标是加入指定工作区应使用该工作区的 Login URL/login/slug完成注册此外需注意实例级注册依赖Allow personal workspace开关INSTANCE_USER_SETTINGS.ALLOW_PERSONAL_WORKSPACE若该开关被关闭实例级自助注册将无法正常创建个人工作区请在第 3 步中务必确认其为开启状态。六、相关资源用户管理文档目录docs/versioned_docs/version-3.0.0-LTS/user-management注册流程核心实现server/src/modules/onboarding/service.ts登录配置更新与实例配置读取server/src/modules/login-configs/service.ts工作区注册开关与域名字段模型server/src/entities/organization.entity.ts实例级设置枚举与默认值含DISABLE_SIGNUPSserver/src/modules/instance-settings/constants/index.ts登录配置更新 DTO字段校验规则server/src/dto/login-configs.dto.ts【免费下载链接】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),仅供参考
延伸阅读

更多相关文章

2026/11/5 1:31:07

常见的系统生物学平台——单细胞转录组测序及分析

一、技术概述在单个细胞的水平之上, 捕获mRNA, 构建文库, 并且进行高通量测序, 以此解析细胞基因表达谱, 这一技术被称作单细胞转录组测序, 它突破了传统bulk测序“细胞群体平均信号”的局限, 能够区分细胞异质性, 鉴定稀有细胞, 解析细胞分群/分化轨迹, 挖掘标记基因, 在肿瘤、…

2026/11/5 13:55:19

GD32E10x官方例程入门:从GPIO点灯到串口调试

简介:这份GD32E10x系列官方例程面向嵌入式硬件与单片机开发者,基于ARM Cortex-M3内核,汇集兆易创新GD32E10x的示例代码,适合工业控制、消费电子、通信设备等场景的学习、验证与二次开发。压缩包共935个文件,约11.16MB&…

2026/11/5 13:50:18

基于Django的运维平台实战:资产、发布、巡检、告警一体化

简介:这份资源是一套基于Django框架开发的运维平台源码,面向具备Python基础、希望了解Web运维系统实现思路的开发者与运维人员,可用于学习主机管理、服务监控、日志查看、任务调度、权限控制、资源统计、脚本执行与故障告警等常见运维模块的落…

2026/11/5 13:25:11

基于ADS122U04IPWR与STM32F427ZI的工业测温方案设计

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/11/5 13:20:10

Dubbo服务下线实时告警:基于ZooKeeper Watch的轻量级监控方案

简介:这是一套面向Java分布式系统运维与开发人员的Dubbo服务高可用监控解决方案,聚焦于Provider异常下线的实时感知与告警响应。资源通过Zookeeper监听机制实现服务状态变更捕获,结合邮件通知模块,在不侵入原有Dubbo代码的前提下&…

2026/11/5 13:20:10

SSM超市管理系统源码解析:从分层架构到本地部署与业务修改

简介:这份资源是面向高校计算机专业学生与Java初学者的一套SSM框架课程设计完整项目,围绕超市管理场景,帮助读者完成从框架整合到业务模块落地的实战练习,适合作为毕业设计或课程作业的参考方案。压缩包共792个文件,约…

2026/11/5 13:20:10

SSM超市管理系统实战:从课设跑通到二次开发全解析

简介:这份资源是面向高校计算机相关专业学生与Java入门开发者的SSM课程设计参考项目,围绕超市管理场景,解决商品、库存、销售等业务模块从设计到落地的实践需求,适合作为课程作业、毕业设计原型或SSM框架练手案例。压缩包共792个文…

2026/11/4 12:38:23

面向复杂光照与角度的宠物面部识别鲁棒性增强策略

在智慧养宠时代,基于视觉的宠物身份识别技术正逐步从实验室走向家庭应用。然而,与配合度高的人类不同,宠物是典型的“非合作生物识别对象”——它们不会主动配合摄像头调整姿态,更无法控制光照环境。实际应用中,我们常…

2026/11/4 21:04:25

SSM电子书店源码全解析:结构、原理、部署与排错实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/11/5 0:02:07

多智能体协作系统架构设计与实践优化

1. 多智能体协作系统的时代背景2017年Transformer架构的诞生彻底改变了人工智能的发展轨迹。当行业还沉浸在单一大模型带来的性能突破时,Anthropic的研究团队已经将目光投向了更前沿的领域——如何让多个智能体通过协作产生超越单体能力的系统智能。这就像交响乐团中…

2026/11/5 0:02:07

大模型系统性入门实战指南:从原理到部署微调的全链路路线

提到大模型的系统性入门,我先说个结论:这事真不难,难的是资料太散、路线太多,今天这个框架明天那个工具,新人很容易在“收藏夹吃灰”和“教程看到一半放弃”之间反复横跳。市面上关于大模型的内容少说有几十万篇&#…

2026/11/5 0:02:07

鸿蒙文件系统沙箱机制解析与开发实践

1. 鸿蒙文件系统沙箱机制深度解析作为一名从Android转向鸿蒙开发的工程师,我深刻体会到文件系统访问是迁移过程中最先遇到的"拦路虎"。在Android上运行良好的文件读写代码,在鸿蒙真机环境却频频出现文件写入后神秘消失或直接抛出权限拒绝错误的…

2026/11/4 12:38:23

面向复杂光照与角度的宠物面部识别鲁棒性增强策略

在智慧养宠时代,基于视觉的宠物身份识别技术正逐步从实验室走向家庭应用。然而,与配合度高的人类不同,宠物是典型的“非合作生物识别对象”——它们不会主动配合摄像头调整姿态,更无法控制光照环境。实际应用中,我们常…

2026/11/4 21:04:25

SSM电子书店源码全解析:结构、原理、部署与排错实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
☎咨询二维码 ☎ ↑