ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 5244|回复: 44

[求助] 关于开发系统时,权限处理的代码思路

[复制链接]

TA的精华主题

TA的得分主题

发表于 2023-1-5 11:14 | 显示全部楼层 |阅读模式
本帖最后由 micch 于 2023-1-7 18:09 编辑

用Excel+VBA开发一个常规的系统模板,在登录和权限设计的时候具体应该如何操作??



问题是这个问题,我个人没专业学过编程,从自己理解的角度设计思路是:


在文件中单独设置一个用户sheet,登记好所有用户和对应的密码,然后打开文件先弹出登录窗体(同时读取用户表的信息到字典或者别的对象中),输入或者选择用户,输入密码,用if判断密码是否正确,正确则关闭窗体打开模板。错误则提示错误并重试,达到一定次数就强制退出。

在权限设计上,我的思路是,对需要控制的操作,设置为允许和不允许的权限,每个用户都对应每一个操作都有一个允许和不允许的值设置。
这样,当用户登录后,在已知登录用户的前提下,就知道哪些操作允许,哪些操作会提示无权限。
诸如,某些页面需要根据用户权限显示或不显示,那么在用户登录通过后就要执行,隐藏登录用户不可操作的页面。
比如某个操作,用户没有权限,那么点击执行操作前,都要做一个判断,是否允许操作。


问题:如果我有很多页面,那么不同用户登录,都需要做一次遍历页面判断是否有权限来设置隐藏或者显示,也就是每个页面都要if判断是否允许显示。
如果有很多种功能,那么每个功能模块在执行开始都要做一个if判断,当前用户是否具有操作权限。
这样下来,几乎所有的功能模块都要先判断再执行,感觉这种思路有点傻。如果我有50个操作功能,那50个sub开头都需要写一次权限判断的代码。


求助:传统的系统设计在权限的处理上应该是什么思路?这种Excel+vba的模式,是否有什么好的思路来处理权限的问题。




PS.  没有示例文件和代码,主要是想沟通一下设计思路,自己去尝试解决。如果论坛有比较好的成品模板涉及到这个问题,请帮忙提供一下链接。


论坛大多的求助都是发问题要结果代码,个人不是很喜欢这种纯求助答案的模式,小问题直接发代码看懂就会了,权限这种我不知道有没有标准答案,主要是想了解一下老师们处理的方式是什么方式或者思路。


TA的精华主题

TA的得分主题

 楼主| 发表于 2023-1-7 12:26 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
本帖最后由 micch 于 2023-1-7 12:37 编辑

简单模拟一个示例文件,请老师们指点一下
用admin和123登录是全部权限,切换用户页面和功能会根据权限设置页的设置而不同

image.jpg

image.png

登录和权限设计.zip (505.91 KB, 下载次数: 30)

TA的精华主题

TA的得分主题

 楼主| 发表于 2023-1-5 11:19 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
在权限代码设计上,常规的系统开发和Excel+vba开发是不是有不同的处理模式?是不是有比较好的方法能一次性处理权限的问题,还是只能在每个操作开始都用一段代码先做一次权限判断。

TA的精华主题

TA的得分主题

发表于 2023-1-5 12:02 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
不是有权限等级这么一说么,每个操作都设个等级,每个账户都设个等级,判断还是要判断的,只不过判断的不是操作,是判断等级是否匹配,我也没学过,瞎猜的

TA的精华主题

TA的得分主题

 楼主| 发表于 2023-1-5 12:12 | 显示全部楼层
lingshimizi 发表于 2023-1-5 12:02
不是有权限等级这么一说么,每个操作都设个等级,每个账户都设个等级,判断还是要判断的,只不过判断的不是 ...

嗯,复杂一点会有权限组或者权限等级的设计方法。通过对权限组统一设置权限来实现。

我主要迷惑的是在代码的编写上,是不是需要所有代码执行前都做一次权限判断??如果避不开这种判断的过程,那么用什么类型的思路或者方法来设计,能较好的处理这个权限判断。主要是迷惑代码用什么方法设计

TA的精华主题

TA的得分主题

 楼主| 发表于 2023-1-5 13:29 | 显示全部楼层
假设没有更好的办法,只能在所有功能模块执行时做一次权限是否允许的判断。


我设想的思路是:在登录时用公共变量记录用户所拥有的权限,一种省事的方法是把用户实例化为一个字典,字典里存储每个功能对应权限是true还是false,每个sub执行第一句就是判断   if  dic(功能名称)=false then exit sub

还有一种想法是,写一个读取权限的function,每次执行sub前先执行 function 比如   if  拥有权限(功能名)= false then exit sub

还有可以麻烦一点写一个用户类,登录时对用户的各个属性做初始化,每次执行sub,  判断用户的权限属性              if  userclass.gongnengmingc= false then exit sub

我不确定我这种思路是不是合理,但是理论上实现权限的处理是可以的,只是觉得太啰嗦,要在所有sub里写

TA的精华主题

TA的得分主题

发表于 2023-1-5 13:38 | 显示全部楼层
micch 发表于 2023-1-5 13:29
假设没有更好的办法,只能在所有功能模块执行时做一次权限是否允许的判断。

你这个权限分的比较简单。
一般系统权限设计到角色,然后对用户分配一个或多个角色,该用户就有了这些角色的叠加权限。例如,张三拥有“财务总监”和“投资总监”角色。
权限至少分为:
1. 功能权限。就是对于每个功能,是否有增、删、改、查、导入、导出等权限。
2. 按钮权限。每个页面上可能有很多按钮,每个角色是否对该按钮有权限。
3. 记录级权限。例如,同一个表,应收会计可以查看“应收账款”科目,出纳只能查看“银行存款”和“现金”科目。

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2023-1-5 14:34 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
用全局变量赋值权限,用的时候用全局变量判断就行了

TA的精华主题

TA的得分主题

发表于 2023-1-5 14:44 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
1.建个权限表,用于保存权限及对应的用户。
2.写自定义函数,用于判断权限是否包括登录用户并返回个结果。
3.使用时调用该函数。

TA的精华主题

TA的得分主题

 楼主| 发表于 2023-1-5 15:23 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
lxw6 发表于 2023-1-5 13:38
你这个权限分的比较简单。
一般系统权限设计到角色,然后对用户分配一个或多个角色,该用户就有了这些角 ...

嗯,权限设计也是个考究人的东西,需要一个合理的模式去设计,参考常见的模式就行。

我还没到那个程度,只是设计简单的权限。我迷惑的是权限设置好以后,代码如何设计,在每个操作功能执行的时候,先判断是否有权限,那不是每个sub都需要至少执行一段判断代码。这对于系统开发的代码来说,有点太麻烦了。每个sub写代码,如果权限后期有修改,就需要每个sub都对应修改。总觉得这种方式不合理

TA的精华主题

TA的得分主题

 楼主| 发表于 2023-1-5 15:25 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
nevercool 发表于 2023-1-5 14:44
1.建个权限表,用于保存权限及对应的用户。
2.写自定义函数,用于判断权限是否包括登录用户并返回个结果。
...

嗯,最早的时候我也是这个思路,写一个函数,读取权限数据,判断是否有权限。

只是觉得每个sub开始都执行一次读取判断返回结果,有点太多余,想了解一下有没有别的什么方法处理权限的判断
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-11-19 20:39 , Processed in 0.049873 second(s), 15 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表