控制用户权限的一段源程序,请高手注释。(20分)

  • 主题发起人 主题发起人 wadelphi
  • 开始时间 开始时间
W

wadelphi

Unregistered / Unconfirmed
GUEST, unregistred user!
有一段源程序、用户登录后在数据表中获取一个qx的值,下面这段程序通过对qx值的运算,得出用户可以打开的菜单项;所有菜单项共分七类、设置qx的值可打开七类菜单项的部分或全部;请问大侠qx的值是怎么设置的?程序中的逻辑及移位运算的含义是什么呀??
附源程序:
for i := 0 to MainForm.MainMenu1.items.Count - 1 do
for j := 0 to MainForm.MainMenu1.Items.Count - 1 do
MainForm.MainMenu1.items.Items[j].Enabled := false;
//使所有的菜单为不可用
qx := qx xor 1234567890;//qx共十位、前四位都是123、通过后七位控制权限;
qx := qx shr 10;
for i := 0 to 6 do //共有7 种权限
if ((1 shl i) and qx) <> 0 then
begin
case i of
0://打开对应菜单项、内容略,下同 ;
1:
2:
3:
4:
5:
6:
end;
end;
 
[:D][:D][:D]
打开对应菜单项=控制用户权限??
 
其实这种方法和我经常使用的方法类似,但是我没有用到什么复杂的算法,QX的每一位就用1、0表示权限的有无,根据这个确认用户能够使用哪些菜单或功能模块。
 
他是用qx的每个bit位是否为1来判断是否开启菜单功能的,没什么特别的,其中他用qx := qx xor 1234567890;进行了简单加密。
 
[8D][8D][8D][8D][8D][8D][8D][8D]
 
我给你一个另外的思路:你可以在数据库里设计二个表:一个存放菜单项与菜单,以及需要什么权限才能访问该菜单项的权限字段;另外一个存放用和信息与菜单权限的,这样在formcreate 或formshow的时候根据用户登陆的权限读取其可以访问的菜单项。然后动态生成一个菜单。
 
大家的答案都不令我满意,请继续!!!!最好详细一点噢!!
 
后退
顶部