应用用户、角色与运行页登录
App user 表示“现在是谁在操作这个 App”。用户、角色和登录状态都属于当前 App,用于显示操作员身份,以及决定页面中的哪些内容可见或可操作。
本文只讲 App 内的用户与角色。需要选择其他账号时,先阅读账号与权限边界。
当前权限模型
- 新建 App 只有不可删除的系统
Admin角色,没有默认 App user,也没有默认密码。 - 每个 App user 只能选择一个角色,并可单独启用或禁用。
- 没有任何已启用 App user 时,App 不要求 App user 登录。
- App
Admin在当前 App 内匹配所有角色,但不会获得 App 之外的权限。 - 支持角色控制的 Component 可以根据当前 App user 决定内容是否可见或可操作。
- 页面显示条件只调整界面体验,不能替代 Object、Query、文件或设备动作自己的授权。
配置应用角色
角色应表示稳定职责,而不是具体姓名。例如:
| 角色 ID | 显示名称 | 适合表达的职责 |
|---|---|---|
Operator | 操作员 | 日常查看与操作 |
Supervisor | 班组长 | 审核与参数确认 |
Maintenance | 维护人员 | 诊断与维护入口 |
Admin | 管理员 | App 内全部角色分支 |
- 打开当前 App 的 Settings → 用户/角色。
- 在应用角色中点击新增角色。
- 输入唯一且稳定的角色 ID,再填写用户可读名称。
- 保留系统
Admin角色。它的 ID 不能修改,也不能删除。 - 点击保存。
Component 使用角色 ID 判断权限。显示名称可以调整,但修改角色 ID 后,应同步检查所有 Component 权限和相关高级源码。源码用法见高级:页面源码开发。
配置 Component 权限
在 Page 中选中支持角色控制的 Component,然后在 Inspector 的权限区域配置允许的角色和未授权时的表现。
- 允许的角色为空:所有用户都可以使用。
- 选择多个角色:匹配任意一项即可;
Admin始终允许。 - 未授权时隐藏:不显示该 Component,也是默认行为。
- 未授权时禁用:保留显示,但禁止其中的交互。
把 CurrentUser 保持在不会被自身角色规则隐藏的区域,确保用户始终能切换账号。以上行为只控制 UI,不能替代敏感操作自己的授权。自定义 Component 的源码权限转发见高级:页面源码开发。
在设置页删除非系统角色时,仍属于该角色的用户会改为 Admin。删除前先把这些用户迁移到预期角色,保存前再逐项核对。
创建应用用户
- 仍在 Settings → 用户/角色中,转到应用用户并点击新增用户。
- 输入唯一用户名和非空密码。
- 为用户选择一个角色。
- 保持启用,或关闭它以阻止该用户登录。
- 点击保存。
新用户必须设置密码。编辑已有用户时,密码框留空表示保留原密码;输入新密码会替换旧密码。Theseus 当前只要求密码非空,生产环境仍应使用组织认可的强密码和安全交付渠道。
保存只更新项目。要让运行页使用新的用户和角色,先 Stop App,再重新 Build,随后 Start。每次交付新版本都会结束已有的 App user 会话,用户需要重新登录。
在页面中加入 CurrentUser
在需要显示当前操作员或提供账号切换入口的 Page 中加入 CurrentUser Component。
CurrentUser 会显示当前 App user,并在自己的对话框中完成登录、切换和退出。切换成功后,运行页会刷新,使页面中的角色判断立即使用新账号;Preview 只更新当前预览会话。显示文案和是否显示角色可以按 Page 需要配置;直接编写源码时参见高级:页面源码开发。
CurrentUser 只管理当前 App 的 App user。把它放在页面中容易找到且不受角色限制的位置,确保操作员始终可以登录、切换或退出。
验证配置
部署后,至少验证以下场景:
| 场景 | 成功表现 |
|---|---|
| 没有已启用 App user | App 不要求 App user 登录 |
| 普通 App user 登录 | CurrentUser 显示正确用户名和角色;权限只匹配该角色 |
App Admin 登录 | CurrentUser 显示 App 管理员;App 内所有角色判断都通过 |
| 用户被禁用 | 该用户不能再次登录,已有身份不再有效 |
| 密码或角色改变 | 重新部署并登录后使用新配置,旧 App user 会话不再有效 |
| 当前角色不在 Component 的允许列表中 | 按设置隐藏或禁用,不影响 CurrentUser 入口 |
请在真实运行页而不是 Design 中验收角色分支。Preview 适合提前检查交互,但最终仍要以真实 App user 登录后的运行页结果为准。
常见问题
已保存用户,运行页却没有变化
运行页仍在使用旧版本。Stop App,重新 Build,再 Start。仅在 Settings 中保存用户不会刷新已经交付的版本。
新用户无法登录
确认用户已启用、用户名完全一致,并检查是否在最后一次修改后重新 Build 和 Start。需要更换密码时,在 Settings → 用户/角色中为该用户输入新密码,再按 Stop → Build → Start 重新交付。
修改角色后,页面显示不符合预期
确认用户选择的是正确角色 ID,并检查相关 Component 的权限设置。显示名称相似不代表角色 ID 相同。删除角色后还要确认相关用户没有被改为 Admin;涉及高级源码时按页面源码开发检查引用。
找不到原生元素的权限编辑器
原生元素没有独立权限分组;需要统一的可见或禁用行为时,使用支持权限设置的 Component。真正执行敏感操作时,仍应在对应能力边界再次授权。
安全边界
- Component 角色控制页面中的显示和交互,不是设备动作、Query、Object 方法或文件操作的强制授权。
- 限制工作区、仓库和交付文件的访问权限,不要在截图、文档或聊天中共享真实 App user 密码。
- 用户离职或换岗后及时禁用账号,并控制 App
Admin的数量。 - 修改用户、密码或角色后,用真实运行页和真实角色重新验收。
- 页面身份不能替代急停、安全控制器、工艺互锁、设备保护或后端业务授权。