09 · 运行程序:登录与用户权限

前面八章讲的都是编辑器。这一章讲编译交付后,现场那台机器上跑的运行程序里,操作工看到的登录和权限——以及你在开发台怎么提前把账号配好。

关键区别:编辑器不设权限门(开发时 Can 恒放行、你就是最高权限)。登录、权限判断、等级约束只在编译出来的运行程序里生效,给现场操作工用。


账号在开发台里配好,编译进去

账号/密码在开发台里配好、保存、编译进去就生效,不是纯运行态才维护。入口:数据菜单 → 用户/权限(或工程树"其他配置 → 用户/权限")。

  • 打开「用户 / 权限(开发台配置 · 编译进运行程序)」弹窗。
  • 库里还没账号时,先引导建第一个管理员(建一个"开发人员/全权",之后再加操作工、组长等)。
  • 已有账号则进「账号」和「角色与权限」两页签。

【配图:开发台用户/权限——账号页签(建账号/改密/禁用)+ 角色与权限页签】

内置角色与等级

四个内置角色,按等级从高到低:

角色 等级
开发人员 100
工程师 80
组长 50
操作工 20

每级可放多个账号。访客 = 未登录态,不建账号。

密码只在后端校验:前端把明文直传一次,绝不存哈希、不判真伪。编译后这套账号 = 运行程序随身带的一个独立内存库。


运行程序里:操作工的视角

编译出的程序跑起来后:

  • 未登录 = 最低权限(访客)。画面上标了高权限的控件(UsePermLevel 高的)置灰,点不动。
  • 登录是画面上的一次动作:按钮的 Login 动作,或运行态顶栏的「登录」。开机不设登录闸——启动就直接进画面。
  • 顶栏还有「用户管理」,登录了有权限的账号后可在现场增删改账号。

等级约束(防提权)

运行态里管账号时:你只能动等级低于你自己的账号和角色。这既挡住提权(操作工造不出管理员),也挡住把自己锁死。

运行态的「用户管理」和开发台的「用户/权限」是同一套后端 RPC、同一批权限项,只是入口不同:开发台是组态模式(直接建/改/重置口令,不挡登录门);运行态那个独立进程才有登录 + ManageUsers + 等级约束。


权限怎么落到画面上

  • 每个控件可设使用权限等级(UsePermLevel):当前登录用户等级够才能操作,不够置灰。
  • 于是同一个运行程序,操作工能按的按钮和组长能按的不一样,靠登录身份区分。

一句话总结

账号在开发台(数据→用户/权限)里配好并编译进运行程序;编辑器本身不设权限门,登录/权限/等级约束只在运行程序里生效;未登录=最低权限、高权限控件置灰,登录是画面动作而非开机门,管账号受"只能动比自己等级低的"约束防提权。