以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- [求助]关于按钮授权的发散问题 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=146177) |
-- 作者:ml3000631 -- 发布时间:2020/2/18 11:52:00 -- [求助]关于按钮授权的发散问题 背景:有角色 A B C,A需要管理使用A窗口中的3个按钮权限,B需要管理使用B窗口中的3个按钮权限,C需要同时使用A、B窗口的按钮权限。 通过学习到: 另一个方法是在窗口的AfterLoad事件设置代码,隐藏或禁用当前用户无权使用的按钮,例如我们在AfterLoad事件设置代码: If User.Roles <> "A" Then \'原文是User.Group,但是考虑到1人要担任多角色问题,将User.Group改为了User.Roles, 试过User.IsRole,但是AfterLoad提示不行。 e.Form.Controls("新增").Enabled = False e.Form.Controls("删除").Enabled = False 这样当非经理级别的用户打开窗口后,Button1和Button3将处于禁用状态,如果你想隐藏这两个按钮,只需将上述代码中的Enabled替换为Visible。 就这样分别给 A、B两个窗口AfterLoad 事件写了代码,现在分别给A角色、B角色赋予对应的角色,都能正常使用按钮,但是给C角色同时赋予两种角色的时候,导致两个窗口按钮都不能使用,单独给C赋予一种角色的时候就可以正常使用。 1、请指教问题处理思考方向及参考。 2、可否将以上代码If User.Roles <> "A" Then 中的A角色改为多个角色的组合,求语法。改完后达到,A角色、X角色可以同时拥有按钮使用权。 谢谢。 |
-- 作者:有点蓝 -- 发布时间:2020/2/18 13:28:00 -- 需要使用User.IsRole,如 If User.IsRole("A") = False Then e.Form.Controls("新增").Enabled = False e.Form.Controls("插入").Enabled = False e.Form.Controls("删除").Enabled = False End If |
-- 作者:ml3000631 -- 发布时间:2020/2/18 14:04:00 -- 那么 If User.IsRole("A") = False Then 可否写成同时判断A角色、B角色 等多种角色呢 谢谢蓝版,
|
-- 作者:有点蓝 -- 发布时间:2020/2/18 14:29:00 -- 比如 ,同时有多个角色 If User.IsRole("A") andalso User.IsRole("B") Then 可能有其中一个角色 If User.IsRole("A") orelse User.IsRole("B") Then 既不是A,也不是B角色 If User.IsRole("A") = false andalso User.IsRole("B") = false Then
|
-- 作者:ml3000631 -- 发布时间:2020/2/18 15:01:00 -- 收到,非常感谢! |