大家在开发的过程中肯定都要对不同的用户授予不同的权限,比如不同用户给予菜单栏显示的内容不同,这通常是通过用户-角色-权限三者之间的管理来管理的:(这里针对winform(C/S)开发来将)
一。首先要建立三者的数据库关闭,简单来说需要建立五张表
1. 用户表
2. 角色表
3. 权限表
4. 用户角色关系表
5. 角色权限关系表
二。根据用户id关联用户角色关系表,然后在关联角色权限关系表 ,从而获得用户所具有的权限列表
三。根据用户具有的权限显示不同的菜单项, 首先应该为每个菜单项的tag属性赋予一个相应的权限代码,必须和权限 表一致,默认为菜单全部显示,循环所有菜单项,如果菜单的tag(权限代码)不在用户的权限列表中,则隐藏该菜单项
四。具体代码如下:
Code
//parDatatable用户具有的权限数据集
//parMs 菜单控件
private static void role(DataTable parDatatable, MenuStrip parMs)
{
DataView dv= parDatatable.DefaultView;
dv.sort=" 选择权限字段进行排序,因为后面要用到dv.find(权限名)方法,具体原因请参考 dataview的使用";
int i=dv.find("从数据集获得的权限代码");
//如果i>-1,则表示在数据集中找到该权限,否则为未找到
//根据i的值来显示隐藏菜单,这个过程可能根据菜单的层级
//会做多个循环
}
//parDatatable用户具有的权限数据集
//parMs 菜单控件
private static void role(DataTable parDatatable, MenuStrip parMs)
{
DataView dv= parDatatable.DefaultView;
dv.sort=" 选择权限字段进行排序,因为后面要用到dv.find(权限名)方法,具体原因请参考 dataview的使用";
int i=dv.find("从数据集获得的权限代码");
//如果i>-1,则表示在数据集中找到该权限,否则为未找到
//根据i的值来显示隐藏菜单,这个过程可能根据菜单的层级
//会做多个循环
}