AWTK 开源串口屏开发(9) - 用户和权限管理

用户管理和权限控制是一个常用的功能。在工业软件中,通常将用户分为几种不同的角色,每种角色有不同的权限,比如管理员、操作员和维护员等等。在 AWTK 串口屏中,内置基本的用户管理和权限控制功能,可以满足常见的需求。开发者不需要编写代码,设计好用户界面,通过数据和命令绑定规则,即可实现用户和权限管理功能,比如登录、登出、修改密码、权限控制、创建用户、删除用户等功能。

在这里插入图片描述

本文介绍一下 AWTK 串口屏中的用户管理和权限控制功能。

1. 出厂默认用户

在下面的数据文件中,可以修改出厂默认的用户和密码。密码使用 sha256 加密,可以使用 在线工具 生成。

design/default/data/user_manager.csv

比如 demo 中的默认用户是:

admin|0|8c6976e5b5410415bde908bd4dee15dfb167a9c873fc4bb8a81f6f2ab448a918|管理员(默认密码:admin)

2. 数据文件格式

用 CSV 格式的文件存储用户名和密码,每行一个用户,每行的格式如下:

  • 用户名。可以使用中文。
  • 角色。用来做实际的权限控制,怎么定义就怎么用。比如:0 表示管理员,1 表示操作员,2 表示维护员。
  • 密码。使用 sha256 加密。
  • 备注。可以使用中文。

在后面的数据绑定中,name 表示用户名,role 表示角色,password 表示密码,memo 表示备注。

3. 用户登录

3.1 用户登录命令

当启用用户管理时,默认模型 (default) 会提供一个 login 的命令。

login 命令依赖两个属性:

  • login_username 登录的用户名。
  • login_password 登录的密码。

login 命令需要一个参数,用来指定登录成功后跳转的目标页面。

3.2 数据绑定

绑定属性绑定规则说明
v-data:value{login_username}用户名编辑器
v-data:value{login_password, Mode=OneWayToModel, ToModel=sha256(value)}密码编辑器
  • Mode=OneWayToModel 表示单向绑定,只能从控件到模型,主要是因为模型里的密码是加密后的哈希值,不能反向绑定到控件。
  • 表示将控件输入的数据使用 sha256 加密后,再赋值给模型。

3.3 命令绑定

绑定属性绑定规则说明
v-on:click{login, Args=home_page}登录按钮的点击事件。home_page 是登录成功后跳转的页面

3.4 demo 参考界面

在这里插入图片描述

4. 用户登录状态

4.1 用户登录状态

用户登录成功后,会在默认模型 (default) 中提供两个变量:

  • username 登录的用户名。

  • userrole 登录的用户角色。

userrole 是一个整数,可以通过 userrole 来控制权限。

4.2 数据绑定

绑定属性绑定规则说明
v-data:value{username}显示当前用名
v-data:value{one_of(‘管理员;工程师;操作员’, userrole)}显示当前的角色名

4.3 命令绑定

比如,只用管理员才能访问的页面,可以通过下面的命令绑定来实现:

绑定属性绑定规则说明
v-on:click{navigate, Args=user_manager, AutoDisable=false}AutoDisable 一定要设置为 false,否则不能绑定 enable 属性
v-data:enable{userrole==0}当前角色为管理员时,才启用本按钮

比如,只用管理员执行某些命令,可以通过下面的命令绑定来实现:

绑定属性绑定规则说明
v-on:click{do_something, Args=xxx, AutoDisable=false}AutoDisable 一定要设置为 false,否则不能绑定 enable 属性
v-data:enable{userrole==0}当前角色为管理员时,才启用本按钮

4.4 demo 参考界面

  • 管理员界面,全部功能可用。

在这里插入图片描述

  • 工程师界面,部分功能可用。

在这里插入图片描述

5. 修改密码

5.1 修改密码命令

当启用用户管理时,默认模型 (default) 会提供一个 change_password 的命令。

change_password 命令依赖两个属性:

  • change_password 修改的密码。
  • change_confirm_password 确认修改的密码。

change_password 命令不需要参数。

5.2 数据绑定

绑定属性绑定规则说明
v-data:value{change_password, Mode=OneWayToModel, ToModel=sha256(value)}密码编辑器
v-data:value{change_confirm_password, Mode=OneWayToModel, ToModel=sha256(value)}确认密码编辑器

5.3 命令绑定

绑定属性绑定规则说明
v-on:click{change_password, CloseWindow=true}确认按钮的点击事件。

5.4 demo 参考界面

在这里插入图片描述

6. 用户管理

前面的模型都是默认模型 (default),用户管理模型是 user_manager。

6.1 用户管理命令

当启用用户管理时,用户管理模型 (user_manager) 会提供一些命令。

  • add 添加用户。
  • remove 删除用户。
  • edit 编辑用户。
  • save 保存用户。
  • reload 重新加载用户。
  • set_selected 设置选中的用户。

6.2 数据绑定

绑定属性绑定规则说明
v-data:value{selected_index}选中的用户索引,在列表项目外使用。
v-data:value{index}序数,在列表项内使用。
v-data:value{item.name}用户名,在列表项内使用。
v-data:value{one_of(‘管理员;工程师;操作员’, item.role)}角色,在列表项内使用。
v-data:value{item.memo}备注,在列表项内使用。

6.3 命令绑定

绑定属性绑定规则说明
v-on:click{add}添加 按钮的点击事件。
v-on:click{edit}编辑 按钮的点击事件。
v-on:click{save}保存 按钮的点击事件。
v-on:click{reload}重新加载 按钮的点击事件。
v-on:click{set_selected}列表项的点击事件。
v-on:click{remove, Args=selected_index, AutoDisable=false}删除按钮的点击事件。AutoDisable 一定要设置为 false,否则不能绑定 enable 属性

为了不让用户删除管理员用户,可以设置删除按钮的 enable 属性。绑定规则如下:

绑定属性绑定规则说明
v-data:enable{selected_index!=0}当前选中的用户不是管理员时,启用本按钮。

6.4 demo 参考界面

在这里插入图片描述

7. 创建用户

user_manager 模型提供了一个 add 命令,用来创建用户。如果支持创建用户,需要提供一个创建用户的界面,窗口的名字必须是 user_manager_add。

通过 new 参数可以设置默认数据。比如:

user_manager(new=' |1| | |');

7.1 模型

创建用户的界面有自己的模型,代表当前创建的用户。

它具有下面的属性:

  • name 表示 username 用户名。
  • role 表示 role 角色。
  • password 表示 password 密码。
  • memo 表示 memo 备注。

它还提供了一个确认增加的命令。

  • add 命令。

7.2 数据绑定

绑定属性绑定规则说明
v-data:value{name, validator=username}用户名编辑器,内置数据校验器 username,用于检查用户名的有效性(如是否重名)
v-data:value{role}角色编辑器
v-data:value{password, Mode=OneWayToModel, ToModel=sha256(value)}密码编辑器
v-data:value{memo}备注编辑器

7.3 命令绑定

绑定属性绑定规则说明
v-on:click{add, CloseWindow=true}确认按钮的点击事件。

7.4 demo 参考界面

在这里插入图片描述

8. 编辑用户

user_manager 模型提供了一个 edit 命令,用来编辑用户。如果支持编辑用户,需要提供一个编辑用户的界面,窗口的名字必须是 user_manager_edit。

8.1 模型

编辑用户的界面有自己的模型,代表当前编辑的用户。

它具有下面的属性:

  • name 表示 username 用户名。
  • role 表示 role 角色。
  • memo 表示 memo 备注。

不需要额外的命令。

8.2 数据绑定

绑定属性绑定规则说明
v-data:value{name}用户名编辑器
v-data:value{role, Trigger=Explicit}角色编辑器,为了方便取消,采用显式更新
v-data:value{memo, Trigger=Explicit}备注编辑器,为了方便取消,采用显式更新

8.3 命令绑定

绑定属性绑定规则说明
v-on:click{nothing, UpdateModel=true, CloseWindow=true}确认按钮的点击事件。
v-on:click{nothing, CloseWindow=true}取消按钮的点击事件。

UpdateModel=true 表示更新模型,CloseWindow=true 表示关闭窗口。

8.4 demo 参考界面

在这里插入图片描述

9. 注意

  • 本项目并没有编写界面相关的代码,AWStudio 在 src/pages 目录下生成了一些代码框架,这些代码并没有用到,可以删除也可以不用管它,但是不能加入编译。

  • 实际开发时,可以参考 demo_user_manager 演示项目,在的它 UI 文件上修改。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/448600.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2024年美赛B题:寻找潜水器 Searching for Submersibles 思路模型代码解析

2024年美赛B题:寻找潜水器 Searching for Submersibles 思路模型代码解析 【点击最下方群名片,加入群聊,获取更多思路与代码哦~】 问题翻译 海上游轮迷你潜艇(MCMS)是一家位于希腊的公司,专门制造能够将人…

BEV感知(2)--转换模块

目录 一、2D到3D转换模块 1、LSS 2、Pseudo LiDAR 二、3D到2D转换模块 1、Explicit mapping 2、Implicit mapping 三、transformer相关 1、VIT 2、Swin Transformer 一、2D到3D转换模块 核心目的:由于将2D空间转换到BEV,所以我们要引入一个媒…

常用数据分析模型与方法

常用数据分析模型与方法 在进行数据分析过程中,通常需要使用各种模型来证明自己的分析观点,一是为了使自己的结论更具备说服力,二是让自己的论证过程更具备逻辑性和条理性。 FineBI 推出部分数据分析方法,帮助用户更好的使用 BI 进…

2024 RTE行业(实时互动行业)人才发展学习总结

解决方案 人才画像 开发者人才素质要求: 具备多个领域的技术知识注重团队合作,具备协作能力以用户为导向的用户体验意识具备创新思维和解决问题的能力需快速响应行业变化和持续的学习能力具备项目管理能力 学习和吸收新知识的渠道 RTE人才分类

十、Qt三维图表

一、Data Visualization模块概述 Data Visualization的三维显示功能主要有三种三维图形来实现,三各类的父类都是QAbstract3DGraph,从QWindow继承而来。这三类分别是:三维柱状图Q3DBar三维空间散点Q3DScatter三维曲面Q3DSurface 1、相关类的…

卸载Ubuntu双系统

卸载Ubuntu双系统 我们卸载Ubuntu双系统,可能出于以下原因: 1、Ubuntu系统内核损坏无法正常进入 2、Ubuntu系统分配空间不足,直接扩区较为复杂 3、以后不再使用Ubuntu,清理留出空间 123无论出于哪种原因,我们都是要…

TikTok赚钱又有新路子?TikTok选品有什么新秘籍?做对什么才能GMV破千万刀?

这一年,到底发生了什么? 上半年TikTok面临北美的严格审查和信息安全方面的质疑,但总算在9月有惊无险地打开了北美TikTok Shop这个“金匣子”,给跨境电商赛道带来新的增量机会,而东南亚市场虽在短暂停滞后迅速峰回路转…

pnpm安装以及管理多个nodejs版本

官网 https://pnpm.io/zh/ https://www.pnpm.cn/ nodejs安装包 https://nodejs.org/download/release/ windows安装 iwr https://get.pnpm.io/install.ps1 -useb | iex重新打开一个新的控制台,输入pnpm -v ubuntu下安装 curl -fsSL https://get.pnpm.io/insta…

多线程(进阶三:JUC)

一、Callable接口 二、reentrantLock 三、原子类 四、线程池 五、信号量 Semaphore 六、CountDownLatch JUC即java.utill.concurrent,里面放了一些多线程编程时有用的类,下面是里面的一些类。 一、Callable接口 1、创建线程的操作 多线程编程时&a…

Docker应用之daemon.json(一)

目录 问题复现原因分析解决步骤1.创建daemon.json2.国内镜像地址3.保存daemon.json4.重启docker服务5.查看镜像源问题小结官网docs提供的一个示例配置参数背景说明 问题复现 今天在用docker部署springboot项目时,出现JDK8依赖包下载失败, 原因分析 第一…

MySQL-----初识

一 SQL的基本概述 基本概述 ▶SQL全称: Structured Query Language,是结构化查询语言,用于访问和处理数据库的标准的计算机语言。SQL语言1974年由Boyce和Chamberlin提出,并首先在IBM公司研制的关系数据库系统SystemR上实现。 ▶美国国家标…

LNMP环境搭建动态网站

一、环境准备 服务器:openEuler 22.03 Linux IPV4 :192.168.110.144/24 网页服务器:Nginx1.21.0 数据库:MySQL 8.0.36 PHP:8.0.30 1.安装软件 [rootnode3 ~]# yum install php-mysqlnd php php-gd php-fpm php-xml -y…