手机站
网通分站
电信主站
密 码:
用户名:
当前位置 : 主页>网络编程>Mssql>列表

关于软件权限配置的一点心得体会

来源:互联网 作者:west263.com 时间:2008-04-02
西部数码-全国虚拟主机10强!40余项虚拟主机管理功能,全国领先!双线多线虚拟主机南北访问畅通无阻!免费赠送企业邮局,.CN域名,自助建站480元起,免费试用7天,满意再付款! P4主机租用799元/月.月付免压金!

本人在软件研发过程中关于用户权限处理的一点点心得体会,拿出来和大家共享,希望大家多提宝贵意见。绿色c hinaip ower. comw6gK8

以往大多数文章资料配置用户权限都是通过ActionList和数据库中的权限表相联实现。我经过实践通过控件的Tag属性(每个控件都有一个保留的Tag属性,默认值为0),也能够实现权限的配置,下面我就具体说明实现方法。绿色c hinaip ower. comw6gK8

1、将任何需要配置权限的菜单和按钮的Tag属性从1开始分配不重复的阿拉伯数字(1,2,3......),这里不用0(控件Tag属性的默认值),表示此控件不需做权限配置。绿色c hinaip ower. comw6gK8

2、将任何权限名称加到CheckBoxList中,包括菜单和按钮,其顺序一定要和分配阿拉伯数字的顺序完全一致。绿色c hinaip ower. comw6gK8

3、在数据库中建立操作员表(包括编号、姓名、权限)权限用一个只包含0和1的字符串表示。用0表示有相应的权限(对应的菜单或按钮可用,Enabled=true),用1表示没有相应的权限(对应的菜单或按钮不可用,Enabled=false)。这个字段要配置足够长(我预留了50位),以备扩充之用。绿色c hinaip ower. comw6gK8

4、配置权限主要代码如下:绿色c hinaip ower. comw6gK8

/* qx,用户权限字符串,operator操作员表,privilege权限字段 */
AnsiString qx="";
for (i=1;i<=CheckListBox1->Items->Count;i ) {
if (CheckListBox1->Checked[i-1]) {
qx=qx "0";
} else {
qx=qx "1";
}
}
Sql="update operator set privilege='" qx "' where Operator_name='" CboOperatorName->Text "'";
5、配置用户的全局变量,在窗体的FormShow事件中加入权限判断代码如下:绿色c hinaip ower. comw6gK8

/* 系统管理员具备任何权限 */
if (FrmDM->GetUserName()!="系统管理员"){
AnsiString qx;
/* 还没有配置权限 */
if (strPrivilege.Length()==0){
for (int j=0;j<=Parent->ComponentCount-1;j ){
if (Parent->Components[j]->Tag!=0){
if (Parent->Components[j]->ClassNameIs("TMenuItem")){
((TMenuItem *)Parent->Components[j])->Enabled=false ;
} else {
((TButton *)Parent->Components[j])->Enabled=false;
}
}
}
} else {
for (i=1; i<=strPrivilege.Length();i ){ /*已配置权限*/
qx=strPrivilege.SubString(i,1);
if (qx=="1"){
for (j=0;j<=Parent->ComponentCount-1;j ) {
if (Parent->Components[j]->Tag==i){
if (Parent->Components[j]->ClassNameIs("TMenuItem")){
((TMenuItem *)Parent->Components[j])->Enabled=false ;
} else {
((TButton *)Parent->Components[j])->Enabled=false;
break;
}
}
}
}
}
}
以上是我在软件研发过程中关于用户权限配置的一点点心得体会,希望能够抛砖引玉。
绿色c hinaip ower. comw6gK8


文章整理:西部数码--专业提供域名注册虚拟主机服务
http://www.west263.com
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!