【求助】一个关于delphi中权限设置的问题,各位达人进来看看~
本人最近做了一个简单的学生信息系统,现在遇到两个小问题,1、我想在登录的时候,增加一个权限的功能,比如,如果是操作员,则主界面几个菜单不可见,如果是管理员,则全可见;看了...
本人最近做了一个简单的学生信息系统,现在遇到两个小问题,
1、我想在登录的时候,增加一个权限的功能,比如,如果是操作员,则主界面几个菜单不可见,如果是管理员,则全可见;看了很多文章,都不行,这种功能,请问一般都是怎么实现的?
2、我在主界面的下面加了一个状态栏,成功登录了,就在下面显示,“ 当前用户:”
这个请问要怎么赋值的?
本人比较菜,所以麻烦说的详细一点,本来想自己下个现成的系统,再研究,不过发现,都没注释,哎;
满意了加分,谢谢! 展开
1、我想在登录的时候,增加一个权限的功能,比如,如果是操作员,则主界面几个菜单不可见,如果是管理员,则全可见;看了很多文章,都不行,这种功能,请问一般都是怎么实现的?
2、我在主界面的下面加了一个状态栏,成功登录了,就在下面显示,“ 当前用户:”
这个请问要怎么赋值的?
本人比较菜,所以麻烦说的详细一点,本来想自己下个现成的系统,再研究,不过发现,都没注释,哎;
满意了加分,谢谢! 展开
4个回答
展开全部
第一步,你需要有一个数据库,其中有一张表,保存了至少用户名、密码和权限三个信息。
最简单的权限可以用一个整数表示,就是分组,数字越大权限越多。
高级一点的权限对应另外一张表:权限表,权限表详细记录每一个功能允许还是不允许。
第二步,在你的程序中加入一个登录界面,登录时从用户表检索用户名和密码与输入的用户名密码匹配的记录,检索到则认为登录成功,否则提示失败。在程序中用全局变量记录登录用户的信息,UserName,UserRights。未登录成功时UserName为空,UserRights=0
第三步,如果登录成功了,关闭登录界面,显示主窗口。在主窗口中增加一个函数InitMenuByUserRights。在FormCreate或者FormShow中调用该函数。
第四步,实现InitMenuByUserRights函数,大致类似下面的语句:
菜单项1.Visible := UserRights > 3;
第五步,在状态栏上显示当前用户:
StatusBar.Panels[0].Text := '当前用户:' + UserName;
有问题欢迎继续提问。
最简单的权限可以用一个整数表示,就是分组,数字越大权限越多。
高级一点的权限对应另外一张表:权限表,权限表详细记录每一个功能允许还是不允许。
第二步,在你的程序中加入一个登录界面,登录时从用户表检索用户名和密码与输入的用户名密码匹配的记录,检索到则认为登录成功,否则提示失败。在程序中用全局变量记录登录用户的信息,UserName,UserRights。未登录成功时UserName为空,UserRights=0
第三步,如果登录成功了,关闭登录界面,显示主窗口。在主窗口中增加一个函数InitMenuByUserRights。在FormCreate或者FormShow中调用该函数。
第四步,实现InitMenuByUserRights函数,大致类似下面的语句:
菜单项1.Visible := UserRights > 3;
第五步,在状态栏上显示当前用户:
StatusBar.Panels[0].Text := '当前用户:' + UserName;
有问题欢迎继续提问。
展开全部
针对第一个小问题:
(1)数据库里除了一个用户信息表A(用户ID,用户名,用户密码,...)外,还需加一个用户权限管理表B(用户ID,权限ID,...)和一个权限管理表C(权限ID,功能ID,功能名称,...),其中功能名称就相当於你界面上的菜单;
(2)登录OK後,根据UserID到数据库里查询出当前用户的权限(select C.功能名称 FROM A,B,C WHERE A.用户ID=B.用户ID AND B.权限ID=C.权限ID),根据功能名称决定是否显示相关菜单。不显示菜单,只需菜单名.Visible:=false;
针对第二个小问题:
(1)主界面和登录界面里需要各定义一个UserID:String;
(2)登录成功後,关闭登录界面,Create一个主界面mainForm,然後将登录界面的UserID赋给主办面的UserID(在登陆按钮消息处理函数结束前:mainForm.UserID:=this.UserID,this表示当前对象即登陆界面),然後给主界面状态栏赋值:StatusBar.Panels[0].Text := '当前用户:' + UserID;
需要继续提问请Hi我~
(1)数据库里除了一个用户信息表A(用户ID,用户名,用户密码,...)外,还需加一个用户权限管理表B(用户ID,权限ID,...)和一个权限管理表C(权限ID,功能ID,功能名称,...),其中功能名称就相当於你界面上的菜单;
(2)登录OK後,根据UserID到数据库里查询出当前用户的权限(select C.功能名称 FROM A,B,C WHERE A.用户ID=B.用户ID AND B.权限ID=C.权限ID),根据功能名称决定是否显示相关菜单。不显示菜单,只需菜单名.Visible:=false;
针对第二个小问题:
(1)主界面和登录界面里需要各定义一个UserID:String;
(2)登录成功後,关闭登录界面,Create一个主界面mainForm,然後将登录界面的UserID赋给主办面的UserID(在登陆按钮消息处理函数结束前:mainForm.UserID:=this.UserID,this表示当前对象即登陆界面),然後给主界面状态栏赋值:StatusBar.Panels[0].Text := '当前用户:' + UserID;
需要继续提问请Hi我~
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
1、权限问题,可以使用actionlist控件,在actionlist里来定义action功能,然后将菜单和快件按钮的action对应到actionlist的相应action里,然后你可以在数据库加入用户表和权限表,一种是直接将你的action名称写入到权限表里与用户表对应,然后在用户登录时取出并对应判断。另一种就是采用数字权限,比如0为普通用户,99为管理员权限,然后在程序里判断,如果是管理员则显示那几个菜单,那几个菜单默认不显示
2、定义一个全局变量,保存username,然后在登录成功后对其进行赋值,
StatusBar.Panels[0].Text := '当前用户:' +username;
2、定义一个全局变量,保存username,然后在登录成功后对其进行赋值,
StatusBar.Panels[0].Text := '当前用户:' +username;
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
在数据库里面每个可以登陆的帐号都增加一些【操作权限】的字段。
登陆时先检查这些权限,再根据这些权限数据再去确定那个菜单或者功能是否显示出来。
登陆时先检查这些权限,再根据这些权限数据再去确定那个菜单或者功能是否显示出来。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询