WEB管理系统中用户权限管理的设计与实现
- 格式:doc
- 大小:164.50 KB
- 文档页数:11
WEB管理系统中用户权限管理的设计与实现 WEB管理系统中用户权限管理的设计与实现 摘要:网络信息管理系统中的数据安全与用户的操作权限是非常重要的。本文针对一些信息管理系统的用户管理模块提出了作者的思路和实现方法。具有一定的参考价值观。
关键词:信息管理系统;用户管理;权限 一、引言 信息管理系统中数据的安全是非常重要的,那基于WEB的多用户信息管理系统中的数据安全问题就显得更为重要,其中每个用户的操作权限就必须由管理员根据工作需要来设置好,实现对于不同的用户登录系统以后出现不同的导航菜单。在实际开发过程中,由于有些企事业单位的管理对于用户的角色与权限的划分不是太明确,所以对于这部分系统的用户我采取了由管理员给每个用户动态添加相应的功能,在用户登录时动态生成系统的导航,这样每个用户登录后只能进行管理员所赋予的操作。 二、数据库表的设计 由于系统是在网络环境中运行,并且是多用户,不同的用户可能享有不同的操作权限,并且 用户的操作权限可能在随岗位或其它原因需要变化。为了系统安全,要求不同用户登录以后只能看到自己所能进行的操作,而且整个系统用户的角色又不是那么明显。基于这样的情况,为完成用户的管理,设计了如下的数据表: 用户信息表(userinfo) 列名 数据类型 长度 是否NULL 列含义 备注
ID char 4 Not null 用户编号 主键
DepartmentID varchar 50 Not null 所在部门
TrueUserName varchar 50 Not null 实名 PassWord varchar 50 Not null 口令 LastLoginTime smalldatetim4 NUll 登 e 录时间 LastLogoutTime smalldatetime 4 NUll 退出时间
LoginTimes int 4 Not null 登录次数 默认0
UserLoginIP nvarchar 50 NUll 登录IP
OnLine bit 1 NUll 是否在线 功能表 列名 数据类型 长度 是否NULL 列含义 备注 功能id nvarchar 6 Not null 功能编号 主键 功能名称 nvarchar 50 Not null 导航标题 文件名 nvarchar 50 Not null 超链asp.net文件
分类 nvarchar 50 Not null 功能分类名称 用户权限表 列名 数据类型 长度 是否NULL 列含义 备注
用户id char 4 Not null 用户编号 功能id nvarchar 6 Not null 功能编号 二、功能模块设计示意图(图1) 图1 用户管理功能模块示意图 三、功能实现 1.对于用户基本信息的管理分别用不同的页面来实现用户信息的增加、删除、修改和用户密码的修改。 2.用户权限分配管理采用一个页面,由分配和移除功能来实现。操作界面如图2:
用户基用户权用户信用户添用户修用户 删用户 密码用户功能用户功能
用户 图2 用户权限管理界面 设计时各主要控件的ID列表 控件 控件ID 方法 选择用户的组合框 DropDownList1
未分配权限的GridView GridView2 已分配权限的GridView GridView1 分配按钮 Button1 Button1_Click 移除按钮 Button2 Button2_Click 实现思路是:管理员登录后选择用户管理功能下的用户权限分配功能,在弹出的页面上首先 选择要分配权限的用户,然后分别采用GridView显示选中用户未分配的权限和分配的权限,在未分配的权限中选择要分配给选中用户的功能,然后点分配按钮,所选中的功能就会出现在已分配权限的 GridView中;在已分配的权限中选择要移除的权限,然后点移除按钮,所选中的功能就会出现在未分配权限的 GridView中;由图2可以很明显地看出每个用户所拥有的权限功能。 四、各主要功能实现方法: 1.未分配权限的GridView的数据绑定 在数据库的功能表中查找当前用户所不具有的操作功能,然后将所得数据集中的信息绑定到未分配权限的GridView中。具体过程如下: protected void gridview2bind() { WebService webs = new WebService(); DataTable ds = new DataTable(); string userid = DropDownList1.SelectedValue.ToString(); ds = webs.ExcuteSelect("SELECT 功能id,分类,功能名称 FROM 功能表 where 功能id not in (select 功能id from 用户权限表 where 用户id=" + userid + ")"); if (ds.Rows.Count == 0) { Button1.Visible = false; } else { Button1.Visible = true; } GridView2.DataSource = ds; GridView2.DataBind(); } 2.已分配权限的GridView的数据绑定 在数据库的功能表中查找当前用户所具有的操作功能,然后将所得数据集中的信息绑定到已分配权限的GridView中。具体过程如下: protected void gridview1bind() { WebService webs = new WebService(); DataTable ds = new DataTable(); string userid = DropDownList1.SelectedValue.ToString(); ds = webs.ExcuteSelect("SELECT 功能id,分类,功能名称 FROM 功能表 where 功能id in (select 功能id from 用户权限表 where 用户id=" + userid + ")"); if (ds.Rows.Count == 0) { Button2.Visible = false; } else { Button2.Visible = true; } GridView1.DataSource = ds; GridView1.DataBind(); } 3. 将在未分配权限的GridView中所选择权限
分配给用户 逐项检查未分配权限的GridView中的所有选项,如果被选择,那么就将此功能添加给当前用户,否则继续检查下一项,直到检查完所有选项。具体过程如下: protected void Button1_Click(object sender, EventArgs e) { string userid = DropDownList1.SelectedValue.ToString(); WebService webs = new WebService(); for (int i = 0; i <= GridView2.Rows.Count - 1; i++) { CheckBox cbox = (CheckBox)GridView2.Rows[i].FindControl("CheckBox1"); if (cbox.Checked == true) { webs.ExcuteSql("insert into 用户权限表(用户id,功能id) values(" + userid + ",'" + GridView2.DataKeys[i].Value.ToString() + "')"); } } gridview2bind(); gridview1bind(); } 4. 将在已分配权限的GridView中所选择权限 删除 逐项检查已分配权限的GridView中的所有选项,如果被选择,那么就将此功能从当前用户的权限中删除,否则继续检查下一项,直到检查完所有选项。具体过程如下: protected void Button2_Click(object sender, EventArgs e) { string userid = DropDownList1.SelectedValue.ToString(); WebService webs = new WebService(); for (int i = 0; i <= GridView1.Rows.Count - 1; i++) { CheckBox cbox = (CheckBox)GridView1.Rows[i].FindControl("CheckBox1"); if (cbox.Checked == true) { webs.ExcuteSql("delete from 用户权限表 where 用户id="+userid+" and 功能id='"+GridView1.DataKeys[i].Value.ToString()+"'"); } } gridview2bind(); gridview1bind(); } 注:ExcuteSql为一在WebService.cs文件中创
建的执行sql语句的公用方法。 五、用户登录后导航的生成 用户登录后根据分配给用户的权限生成相应的操作导航菜单。具体实现是用户登录后,在数据库的权限表中查找此用户所拥有的权限,然后以设计的方式分类逐项在客户端将功能名称以超链接的方式进行显示,超链接的文件为相应的程序文件即可。 六、总结