ApusIDE内置的用户权限管理功能按用户组来管理用户权限。对控件的操作(如按钮的点击)可以授权给一个或多个用户组,当前登录用户拥有权限才能进行操作。
使用流程
创建用户组、创建用户;
控件启用权限管理;
项目视图中,工程设置下,打开“用户权限”页签如下:
在“用户权限”功能中,开发人员可以创建用户组、用户,分配用户所属用户组,设置用户密码;
创建用户组后,开发人员可以对控件的操作权限进行“权限控制”授权,如下图所示,
点击“权限控制”...,选择一个或多个用户组可操作该元件:
设置后,只有具备权限的用户组用户才能进行操作。
两种使用方法。第一种会一直保留用户权限直到用户注销,第二种则每次点击时都要进行验证。
1)自动登录
如果当前用户未登录,点击已进行权限控制的按钮时会自动弹出登录框进行登录。
如果当前用户已登录但无权限,点击已进行权限控制的按钮时也会自动弹出登录框进行登录,这个时候用户可以切换新的用户进行授权认证。
2)代码登录
开发者可以根据需要,调用下面的代码弹出登录对话框让用户登录。
通常用在如MES等需要用户先登录再操作的应用场景下使用。
pm->getLoginBox("登录")->show();
另外一种在按钮事件处理中的用法参考:
点击按钮时,弹出用户验证密码,代码实现如下所示:
用户登录对话框如下图示:
选择用户名,输入密码进行验证,验证通过且权限匹配则执行业务处理,否则给出失败提示(如):
或无权限提示。
注: ApusIDE没有用户超时自动注销功能。
要实现用户注销功能,开发人员可以添加代码来实现:
1)弹出“用户注销”对话框来注销
pm->getLogoutBox("确认注销?")->show();
一般这种方式放在按钮的点击事件中处理,来实现用户自主决定是否注销当前登录。
2)静默注销
在用户退出需要进行权限控制的页面时(比如参数设置页)自动注销。举例如下,
#include "Frm11.h"
//加入头文件
#include "op/IAuthMgr.h"
Frm11::Frm11(HmiApp* app, STTWidget *par, const string& id, const string& desc) : STTPage(app->getRuntime(), par, id, desc) {
hmiApp = app;
}
Frm11::~Frm11() {
//在页面的析构函数里面自动注销当前用户
AuthMgr::userLogout();
}
与用户权限相关的几个系统变量如下:
标识 | 名称 | 说明 |
$uid | 登录用户 |
字符串型,默认为空 登录后写入当前用户id 注销后清空 |
$uname | 登录用户名 |
字符串型,默认为空 登录后写入当前用户名 注销后清空 |
$ugrp | 用户组 |
字符串型,默认为空 登录后写入当前用户组 注销后清空 |
可以在组态时添加一个文字标签控件,然后关联上面的"$uname"变量即可。
屏中内置用户管理功能,开发者通过组态开发,调用“密码设置”功能,让具有管理权限的用户打开内置的用户管理。实现用户的增加、删除、密码设置等功能。
注:内置的用户管理不能创建新的用户组。