09 · 运行程序:登录与用户权限
前面八章讲的都是编辑器。这一章讲编译交付后,现场那台机器上跑的运行程序里,操作工看到的登录和权限——以及你在开发台怎么提前把账号配好。
关键区别:编辑器不设权限门(开发时
Can恒放行、你就是最高权限)。登录、权限判断、等级约束只在编译出来的运行程序里生效,给现场操作工用。
账号在开发台里配好,编译进去
账号/密码在开发台里配好、保存、编译进去就生效,不是纯运行态才维护。入口:数据菜单 → 用户/权限(或工程树"其他配置 → 用户/权限")。
- 打开「用户 / 权限(开发台配置 · 编译进运行程序)」弹窗。
- 库里还没账号时,先引导建第一个管理员(建一个"开发人员/全权",之后再加操作工、组长等)。
- 已有账号则进「账号」和「角色与权限」两页签。
【配图:开发台用户/权限——账号页签(建账号/改密/禁用)+ 角色与权限页签】
内置角色与等级
四个内置角色,按等级从高到低:
| 角色 | 等级 |
|---|---|
| 开发人员 | 100 |
| 工程师 | 80 |
| 组长 | 50 |
| 操作工 | 20 |
每级可放多个账号。访客 = 未登录态,不建账号。
密码只在后端校验:前端把明文直传一次,绝不存哈希、不判真伪。编译后这套账号 = 运行程序随身带的一个独立内存库。
运行程序里:操作工的视角
编译出的程序跑起来后:
- 未登录 = 最低权限(访客)。画面上标了高权限的控件(
UsePermLevel高的)置灰,点不动。 - 登录是画面上的一次动作:按钮的 Login 动作,或运行态顶栏的「登录」。开机不设登录闸——启动就直接进画面。
- 顶栏还有「用户管理」,登录了有权限的账号后可在现场增删改账号。
等级约束(防提权)
运行态里管账号时:你只能动等级低于你自己的账号和角色。这既挡住提权(操作工造不出管理员),也挡住把自己锁死。
运行态的「用户管理」和开发台的「用户/权限」是同一套后端 RPC、同一批权限项,只是入口不同:开发台是组态模式(直接建/改/重置口令,不挡登录门);运行态那个独立进程才有登录 +
ManageUsers+ 等级约束。
权限怎么落到画面上
- 每个控件可设使用权限等级(
UsePermLevel):当前登录用户等级够才能操作,不够置灰。 - 于是同一个运行程序,操作工能按的按钮和组长能按的不一样,靠登录身份区分。
一句话总结
账号在开发台(数据→用户/权限)里配好并编译进运行程序;编辑器本身不设权限门,登录/权限/等级约束只在运行程序里生效;未登录=最低权限、高权限控件置灰,登录是画面动作而非开机门,管账号受"只能动比自己等级低的"约束防提权。