xujian600 发表于 2019-4-15 09:23:11

主界面菜单权限问题

做了一个主界面和登录界面,想实现 不同用户登录后,用户在主界面看到的菜单不同,比如:管理员看到3个菜单,普通用户只能看到2个菜单,还有一个菜单被隐藏看不见了。请高手指点一下代码该怎么写。谢谢。 {:5_108:}

凌九霄 发表于 2019-4-15 09:41:21

本帖最后由 凌九霄 于 2019-4-15 09:43 编辑

一般是建立一个权限表,将各个菜单和各个级别操作员的权限设定,有权限设为1,无权限设为0,每次登陆启动后去读取这张表,遍历设定菜单的隐现。这种好处是可以随时定制权限。

xujian600 发表于 2019-4-15 09:55:32

凌九霄 发表于 2019-4-15 09:41
一般是建立一个权限表,将各个菜单和各个级别操作员的权限设定,有权限设为1,无权限设为0,每次登陆启动后 ...

我的设想是:只要一个管理员,一个普通用户 。DELPHI 7+ SQL SERVER 2000 . 登录界面点击登录后,根据我的登录用户名不同,出现的菜单不同。我不知道loginuser 如何定义。
if LoginUser = '管理员' then
begin
菜单项1.Visible := True;
菜单项2.Visible := True;
菜单项3.Visible := True;
end;

if LoginUser = '一般用户' then
begin
菜单项1.Visible := True;
菜单项2.Visible := True;
菜单项3.Visible := False;//一般用户登录时,菜单项3不可见
end;

凌九霄 发表于 2019-4-15 11:08:32

xujian600 发表于 2019-4-15 09:55
我的设想是:只要一个管理员,一个普通用户 。DELPHI 7+ SQL SERVER 2000 . 登录界面点击登录后,根据我 ...

你这样当然也可以,只不过写死了,不灵活。一旦新增用户组或者更改菜单权限就需要修改源代码重新编译。

xujian600 发表于 2019-4-15 11:29:05

凌九霄 发表于 2019-4-15 11:08
你这样当然也可以,只不过写死了,不灵活。一旦新增用户组或者更改菜单权限就需要修改源代码重新编译。

我不知道那个代码在哪里写。。。如何定义登录名?   {:5_100:}

凌九霄 发表于 2019-4-15 11:46:45

定义两个表:用户表,权限表
用户表字段:id,user,pass,group
权限表字段:id,menu,permissions,group
软件启动后,肯定首先连接的数据库,以输入的用户名和密码为参数检索得到各个菜单的是否显示状态,然后遍历菜单是否visible

xujian600 发表于 2019-4-15 11:54:53

谢谢,我再学习一下。

xujian600 发表于 2019-4-17 22:46:30

凌九霄 发表于 2019-4-15 11:46
定义两个表:用户表,权限表
用户表字段:id,user,pass,group
权限表字段:id,menu,permissions,grou ...

你好,请教一下:
procedure Tstryker_login.Button1Click(Sender: TObject);

var user,pass,temp:string;
begin
user:=Edit1.Text;
pass:=Edit2.Text;

ADOQuery1.Close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Text:='select * from abc where 用户名='''+user+''' and 密码='''+pass+'''';
Adoquery1.Open;
if Adoquery1.RecordCount <>0 then
    begin
      Form1.f1.Enabled:=true;
      Form1.x1.Enabled:=true;
         form1.E1.Enabled:=true;
      Form1.s1.Enabled:=true;
      Form1.p1.Enabled:=true;

    temp:=adoquery1.FieldByName('权限').AsString;
if temp='管理员' then
    begin
      Form1.f1.Enabled:=true;
      Form1.x1.Enabled:=true;
      Form1.s1.Enabled:=true;
      Form1.p1.Enabled:=true;
      form1.E1.Enabled:=true;
    end    else
    if temp='普通用户' then
      Form1.f1.Enabled:=true;
      Form1.x1.Enabled:=true;
      Form1.s1.Enabled:=true;
      Form1.p1.Enabled:=true;
         form1.E1.Enabled:=false;
      stryker_login.Hide;
      Form1.Visible:=true;

end
else
begin
    ShowMessage('用户名或密码错误,请检查后重新登录');
    end;
end;
我这样写出来,主界面这个菜单form1.E1.Enabled:=false; 管理员和普通用户一样显示灰色。不知道怎么写。还是没有达到我的目的。或者能告诉我使用哪个函数或者插件? 谢谢。{:9_227:}
页: [1]
查看完整版本: 主界面菜单权限问题