ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

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

[复制链接]

TA的精华主题

TA的得分主题

发表于 2023-1-8 21:50 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
micch 发表于 2023-1-7 12:26
简单模拟一个示例文件,请老师们指点一下
用admin和123登录是全部权限,切换用户页面和功能会根据权限设置 ...

类是这么写的吗?我记得这些应该也是用模块写就可以了吧?
类应该是一个对象的描述吧?不知道我说的对不对?

TA的精华主题

TA的得分主题

 楼主| 发表于 2023-1-9 09:34 | 显示全部楼层
洋务德雷 发表于 2023-1-8 21:50
类是这么写的吗?我记得这些应该也是用模块写就可以了吧?
类应该是一个对象的描述吧?不知道我说的对不 ...

vba有个专门的类模块,可以写类,至于类应该怎么写,肯定不是我这么简单的模拟,vba的类不完整,只是大概一个意思。如果是vb或者C#的类,不是这么用。

搭配数据库开发系统,我没试过,因为不懂数据库。我这个思路完全是在前端也就是操作界面里控制权限。如果是数据库+Excel的模式开发,那么权限应该放在数据库里,这样和Excel完全隔离更符合系统开发的正常模式。

不过在数据库里,如何写代码控制权限,我就不懂了,不过思路也还是单独写一个类去控制,想法实现在用户登录时,对权限做处理,而不是在执行功能时判断权限。

TA的精华主题

TA的得分主题

发表于 2023-1-9 22:00 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
micch 发表于 2023-1-9 09:34
vba有个专门的类模块,可以写类,至于类应该怎么写,肯定不是我这么简单的模拟,vba的类不完整,只是大概 ...

想法实现在用户登录时,对权限做处理,而不是在执行功能时判断权限。

这句话我比较同意。数据库+vba确实是较好的解决方案。
其实就是vba+SQL的一种解决方案。
数据库的选择也是需要技术的。Access还是MYsql,还是SQL server ,不同的数据库连接方式和SQL代码都有不同。
最简单的就是ACCESS+EXCEL方式。不过这种数据库适合做单机版,如果是多机版,MYSQL和SQL SERVER还是比较好,可以加密。
SQL SERVER我粗略接触过,这种可以在数据库直接登录时就设置了权限。不用那么多的代码。

TA的精华主题

TA的得分主题

发表于 2023-1-10 12:32 | 显示全部楼层
想法实现在用户登录时,对权限做处理,而不是在执行功能时判断权限

我的建议是: 执行每个功能时, 都要判断权限
这样可以实现权限的自由设置
如果只是分组设置权限  想临时赋予 某用户一个权限 则非常麻烦

TA的精华主题

TA的得分主题

 楼主| 发表于 2023-1-10 14:11 | 显示全部楼层
本帖最后由 micch 于 2023-1-10 14:26 编辑
opiona 发表于 2023-1-10 12:32
想法实现在用户登录时,对权限做处理,而不是在执行功能时判断权限

我的建议是: 执行每个功能时, 都要判 ...

功能执行前先判断权限,就需要在执行每个功能的代码,都调用一次权限的判断。

我是觉得,对有权限的用户来说,操作使用过程中,会产生完全没有必要的运算,所以才考虑权限只在登录时处理一次。还有就是,我没试过,如果是每个功能判断权限,就需要在每个功能代码里都写一段权限判断语句,我想不出别的代码写法,总觉得一段相同的代码,复制到每一个sub里,有点啰嗦了。

关于,临时权限,或者预设没有的权限,我设想的时候,可以设置一个临时用户组,权限可以随时修改,或者是随时增加一个用户组,单独生成一个新的权限组。
不分权限组,完全一个用户一组权限设置是可以的,其实我本来也是觉得这种模式封方便管理和操作,除非是类似web系统那种,非常多的用户并且用户权限都完全一致的模式,才考虑用户组的设置模式。

TA的精华主题

TA的得分主题

 楼主| 发表于 2023-1-10 14:15 | 显示全部楼层
洋务德雷 发表于 2023-1-9 22:00
想法实现在用户登录时,对权限做处理,而不是在执行功能时判断权限。

这句话我比较同意。数据库+vba确 ...

等我研究一下数据库,回头试试Excel+数据库的模式,如何写代码。

Excel作为操作页面,无论是按钮,还是菜单,终究是要执行一个sub,所以模式可以不变,也是登录时对按钮或者菜单设置关联的sub,只不过sub执行的内容是操作数据库而不是操作工作表。

换别的模式,我一时想不出别的写法,可以回头再想想。

TA的精华主题

TA的得分主题

发表于 2023-1-10 14:52 | 显示全部楼层
如果是每个功能判断权限,就需要在每个功能代码里都写一段权限判断语句

我的经验是: 每个模块的每个功能设置一对名称  例如: 系统用户表_添加数据,系统用户表_修改数据
公共变量: Str用户权限 是用户的全部权限
过程中判断
Str所需权限=activesheet.name & "_添加数据"
if instr(Str用户权限,Str所需权限)>0 then

end if

TA的精华主题

TA的得分主题

 楼主| 发表于 2023-1-10 21:16 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
opiona 发表于 2023-1-10 14:52
如果是每个功能判断权限,就需要在每个功能代码里都写一段权限判断语句

我的经验是: 每个模块的每个功能 ...

就是,登录的时候,先读取登录用户的权限,把拥有的全部权限都合并为一个字符串  Str用户权限。

并且这个字符串的内容,都是对应每个功能的名称(也就是:表名称_功能名称)

然后每个功能对应的sub开始,判断当前要执行的功能   当前表名称_当前功能  是否包含在  str用户权限里,如果包含就代表拥有这个功能的权限。然后执行  if 中间的代码(也就是功能的具体操作代码)

这个判断方法挺省事,不用单独写类或者function判断,只是在登录的时候生成一下 str用户权限就行。

回头可以参考这种模式设计一下。不过,我现在主要是不想在每个sub里写代码。主要是基于一种情况:

比如我做了一个没有登录和权限的系统。使用了一段时间我想给系统增加权限和多用户。那么我完全不用改原来系统的代码,只需要另外写登录和权限处理的模块。如果是按上面的代码思路,就需要对原来系统的功能模块,都增加一段if判断权限的代码。

TA的精华主题

TA的得分主题

发表于 2023-1-11 00:27 来自手机 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2023-1-11 00:36 来自手机 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
用excel管理权限,感觉很不安全,应该很容易被提权
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-11-19 20:46 , Processed in 0.046756 second(s), 6 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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