【产品应用】AWTK开源串口屏开发(9)-用户和权限管理

原创 ZLG致远电子 2024-02-02 11:40
在AWTK串口屏中,内置用户管理和权限控制的模型,无需编码即可实现登录、登出、修改密码、权限控制、创建用户、删除用户等功能,本文介绍一下用户管理和权限控制的基本用法。


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


1. 出厂默认用户

在下面的数据文件中,可以修改出厂默认的用户和密码。密码使用 sha256 加密,可以使用在线工具生成。
https://emn178.github.io/online-tools/sha256.html
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

data:enable    {userrole==0}    

当前角色为管理员时,才启用本按钮

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

绑定属性

绑定规则

说明

v-on:click

{do_something, Args=xxx, AutoDisable=false}

AutoDisable 一定要设置为 false,否则不能绑定 enable 属性

v-data:enable

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 文件上修改。


  产品推荐

  技术交流群
长按识别如下二维码可加入“EsDA嵌入式系统设计自动化交流群”,与志同道合的朋友交流,并有专业技术人员为您答疑解惑,如有问题可以咨询小致微信zlgmcu-888。

更多往期文章,请点击“ 阅读原文 ”。

评论
  • 光伏逆变器是一种高效的能量转换设备,它能够将光伏太阳能板(PV)产生的不稳定的直流电压转换成与市电频率同步的交流电。这种转换后的电能不仅可以回馈至商用输电网络,还能供独立电网系统使用。光伏逆变器在商业光伏储能电站和家庭独立储能系统等应用领域中得到了广泛的应用。光耦合器,以其高速信号传输、出色的共模抑制比以及单向信号传输和光电隔离的特性,在光伏逆变器中扮演着至关重要的角色。它确保了系统的安全隔离、干扰的有效隔离以及通信信号的精准传输。光耦合器的使用不仅提高了系统的稳定性和安全性,而且由于其低功耗的
    晶台光耦 2024-12-02 10:40 125浏览
  • TOF多区传感器: ND06   ND06是一款微型多区高集成度ToF测距传感器,其支持24个区域(6 x 4)同步测距,测距范围远达5m,具有测距范围广、精度高、测距稳定等特点。适用于投影仪的无感自动对焦和梯形校正、AIoT、手势识别、智能面板和智能灯具等多种场景。                 如果用ND06进行手势识别,只需要经过三个步骤: 第一步&
    esad0 2024-12-04 11:20 58浏览
  • 概述 说明(三)探讨的是比较器一般带有滞回(Hysteresis)功能,为了解决输入信号转换速率不够的问题。前文还提到,即便使能滞回(Hysteresis)功能,还是无法解决SiPM读出测试系统需要解决的问题。本文在说明(三)的基础上,继续探讨为SiPM读出测试系统寻求合适的模拟脉冲检出方案。前四代SiPM使用的高速比较器指标缺陷 由于前端模拟信号属于典型的指数脉冲,所以下降沿转换速率(Slew Rate)过慢,导致比较器检出出现不必要的问题。尽管比较器可以使能滞回(Hysteresis)模块功
    coyoo 2024-12-03 12:20 124浏览
  • 《高速PCB设计经验规则应用实践》+PCB绘制学习与验证读书首先看目录,我感兴趣的是这一节;作者在书中列举了一条经典规则,然后进行详细分析,通过公式推导图表列举说明了传统的这一规则是受到电容加工特点影响的,在使用了MLCC陶瓷电容后这一条规则已经不再实用了。图书还列举了高速PCB设计需要的专业工具和仿真软件,当然由于篇幅所限,只是介绍了一点点设计步骤;我最感兴趣的部分还是元件布局的经验规则,在这里列举如下:在这里,演示一下,我根据书本知识进行电机驱动的布局:这也算知行合一吧。对于布局书中有一句:
    wuyu2009 2024-11-30 20:30 128浏览
  • 11-29学习笔记11-29学习笔记习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习笔记&记录学习习笔记&记学习学习笔记&记录学习学习笔记&记录学习习笔记&记录学习学习笔记&记录学习学习笔记记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&学习学习笔记&记录学习学习笔记&记录学习学习笔记&记
    youyeye 2024-12-02 23:58 73浏览
  • 作为优秀工程师的你,已身经百战、阅板无数!请先醒醒,新的项目来了,这是一个既要、又要、还要的产品需求,ARM核心板中一个处理器怎么能实现这么丰富的外围接口?踌躇之际,你偶阅此文。于是,“潘多拉”的魔盒打开了!没错,USB资源就是你打开新世界得钥匙,它能做哪些扩展呢?1.1  USB扩网口通用ARM处理器大多带两路网口,如果项目中有多路网路接口的需求,一般会选择在主板外部加交换机/路由器。当然,出于成本考虑,也可以将Switch芯片集成到ARM核心板或底板上,如KSZ9897、
    万象奥科 2024-12-03 10:24 68浏览
  • 遇到部分串口工具不支持1500000波特率,这时候就需要进行修改,本文以触觉智能RK3562开发板修改系统波特率为115200为例,介绍瑞芯微方案主板Linux修改系统串口波特率教程。温馨提示:瑞芯微方案主板/开发板串口波特率只支持115200或1500000。修改Loader打印波特率查看对应芯片的MINIALL.ini确定要修改的bin文件#查看对应芯片的MINIALL.ini cat rkbin/RKBOOT/RK3562MINIALL.ini修改uart baudrate参数修改以下目
    Industio_触觉智能 2024-12-03 11:28 87浏览
  • RDDI-DAP错误通常与调试接口相关,特别是在使用CMSIS-DAP协议进行嵌入式系统开发时。以下是一些可能的原因和解决方法: 1. 硬件连接问题:     检查调试器(如ST-Link)与目标板之间的连接是否牢固。     确保所有必要的引脚都已正确连接,没有松动或短路。 2. 电源问题:     确保目标板和调试器都有足够的电源供应。     检查电源电压是否符合目标板的规格要求。 3. 固件问题: &n
    丙丁先生 2024-12-01 17:37 102浏览
  • 最近几年,新能源汽车愈发受到消费者的青睐,其销量也是一路走高。据中汽协公布的数据显示,2024年10月,新能源汽车产销分别完成146.3万辆和143万辆,同比分别增长48%和49.6%。而结合各家新能源车企所公布的销量数据来看,比亚迪再度夺得了销冠宝座,其10月新能源汽车销量达到了502657辆,同比增长66.53%。众所周知,比亚迪是新能源汽车领域的重要参与者,其一举一动向来为外界所关注。日前,比亚迪汽车旗下品牌方程豹汽车推出了新车方程豹豹8,该款车型一上市就迅速吸引了消费者的目光,成为SUV
    刘旷 2024-12-02 09:32 120浏览
  •         温度传感器的精度受哪些因素影响,要先看所用的温度传感器输出哪种信号,不同信号输出的温度传感器影响精度的因素也不同。        现在常用的温度传感器输出信号有以下几种:电阻信号、电流信号、电压信号、数字信号等。以输出电阻信号的温度传感器为例,还细分为正温度系数温度传感器和负温度系数温度传感器,常用的铂电阻PT100/1000温度传感器就是正温度系数,就是说随着温度的升高,输出的电阻值会增大。对于输出
    锦正茂科技 2024-12-03 11:50 112浏览
  • 戴上XR眼镜去“追龙”是种什么体验?2024年11月30日,由上海自然博物馆(上海科技馆分馆)与三湘印象联合出品、三湘印象旗下观印象艺术发展有限公司(下简称“观印象”)承制的《又见恐龙》XR嘉年华在上海自然博物馆重磅开幕。该体验项目将于12月1日正式对公众开放,持续至2025年3月30日。双向奔赴,恐龙IP撞上元宇宙不久前,上海市经济和信息化委员会等部门联合印发了《上海市超高清视听产业发展行动方案》,特别提到“支持博物馆、主题乐园等场所推动超高清视听技术应用,丰富线下文旅消费体验”。作为上海自然
    电子与消费 2024-11-30 22:03 98浏览
  • 当前,智能汽车产业迎来重大变局,随着人工智能、5G、大数据等新一代信息技术的迅猛发展,智能网联汽车正呈现强劲发展势头。11月26日,在2024紫光展锐全球合作伙伴大会汽车电子生态论坛上,紫光展锐与上汽海外出行联合发布搭载紫光展锐A7870的上汽海外MG量产车型,并发布A7710系列UWB数字钥匙解决方案平台,可应用于数字钥匙、活体检测、脚踢雷达、自动泊车等多种智能汽车场景。 联合发布量产车型,推动汽车智能化出海紫光展锐与上汽海外出行达成战略合作,联合发布搭载紫光展锐A7870的量产车型
    紫光展锐 2024-12-03 11:38 105浏览
我要评论
0
点击右上角,分享到朋友圈 我知道啦
请使用浏览器分享功能 我知道啦