4.1 用户管理

用户是登录系统的楔子。

用户管理主要是针对平台的使用者进行管理。包括:

① 用户信息(帐号、密码、姓名等个人基本信息和状态、职位、职务等平台信息)
② 用户组设置、组织归属
③ 角色设定
④ 用户的模块资源授权和具体动作权限分配等。

用户管理的功能作业区(用户操作)界面如下图4.1-1所示,通过主要的操作按钮和信息内容可知其功能有:新增用户、编辑用户、删除用户、修改密码、设置角色、单独授权、组织调动、用户有效性、用户排序等。

其中,功能操作按钮的状态会根据选择的左侧树型中不同节点和不同登录用户的动作权限而改变。具有系统本身和权限系统的双重保证和控制。

图4.1-1  用户管理界面

4.1.1 新增、编辑和删除

新增用户:点击展开树形菜单“用户类型”,可以看到平台的各个组织结构和其对应组织目录(机构、部门)下的人员情况。选择一个组织(例如“系统管理”)后点击“新增”按钮,弹出如下图4.1.1-1中所示操作界面:

图4.1.1-1  新增用户

在新增用户的过程中,用户基础信息中带红色星号标记“*”的四项是必填内容:登录帐号,登录密码,用户姓名和排序ID。其中用户登录帐号除不能为空外,在平台中还具有物理和逻辑状态唯一性,用户密码也具有自动强度检测功能;可以指定用户状态(是否禁用),用户特性(是否内部用户),在高级选项卡中可以设置联系方式,证件号,职位,职务以及备注等高级内容。

     private bool InsertorUpdateStaff(){if (dmeStaff == null){dmeStaff = new DMESYS_STAFF();}if (dmeOrgan == null){dmeOrgan = new DMESYS_DEPARTMENT();}if (action == Action.ADD){if (DoValidatedStaff()){dmeStaff.Department_Id = dmeOrgan.Id;DBOSYS_STAFF.InsertDMESYS_STAFF(dmeStaff);return true;}}if (action == Action.EDIT){if (DoValidatedStaff()){DBOSYS_STAFF.UpdateDMESYS_STAFF(dmeStaff);return true;}}return false;}

编辑用户:这里涉及到需要修改用户基本信息,职位变更,职务调动,排序,状态调整,证件修改等情况时进行的编辑操作。

点击展开树形菜单“用户类型”,在组织目录(机构、部门)下选择一个指定的用户(例如“超级管理员”)后点击“编辑”按钮,即可以编辑、修改具体的用户信息,编辑操作界面如下图4.1.1-2中所示:

图4.1.1-2  编辑用户

     private void DirtyData(){lbtxtLoginId.Text = dmeStaff.Login_Id;lbtxtLoginId.ReadOnly = true;lbtxtPwd.Text = dmeStaff.Password;lbtxtPwd.ReadOnly = true;lbtxtName.Text = dmeStaff.Name;lbtxtOrder.Text = dmeStaff.Order_Id.ToString();lbtxtRemark.Text = dmeStaff.Remark;wcbSex.SelectedIndex = dmeStaff.Sex == 1 ? 0 : 1;wcbPosition.SelectedIndex = FindKVPIndex(sysCodePosition, dmeStaff.Position_Tag) + 1;wcbTitle.SelectedIndex = FindKVPIndex(sysCodeTitle, dmeStaff.Title_Tag) + 1;lbtxtCode.Text = dmeStaff.Code;lbtxtCellphone.Text = dmeStaff.Cellphone;lbtxtEmail.Text = dmeStaff.Email;chkBoxDisabled.Checked = dmeStaff.Disabled == 0 ? false : true;chkIsInnerUser.Checked = dmeStaff.Is_Inner_User == 0 ? false : true;return;}

删除用户:如果需要对平台上的用户进行删除,点击展开树形菜单“用户类型”,在组织下选择一个用户后点击“删除”按钮,下图4.1.1-3中显示了删除用户操作的提示对话框界面。

备注:对于系统内置的超级管理员帐号是无法删除的;对于包含有权限或者角色的用户也是无法直接删除的,需要先取消其授权的资源。

图4.1.1-3  删除用户提示

       if (selectedObj is DMESYS_STAFF){if ((selectedObj as DMESYS_STAFF).Login_Id.ToUpper() == SADMIN){GUIHelper.MessageToUserError("错误:无法删除超级管理员帐户!");return;}if (DBOSYS_STAFF.IsAuthorized(selectedObj as DMESYS_STAFF)){GUIHelper.MessageToUserInfo("提示:该职员包含权限,无法直接删除!");return;}if (DBOSYS_STAFF.IsRoled(selectedObj as DMESYS_STAFF)){GUIHelper.MessageToUserInfo("提示:该职员包含角色,无法直接删除!");return;}if (GUIHelper.MessageQuestion("确定要删除职员“" + (selectedObj as DMESYS_STAFF).Name + "”吗?", "删除职员")){DBOSYS_STAFF.DeleteDMESYS_STAFF(selectedObj as DMESYS_STAFF);btnRefresh_Click(sender, e);return;}}

4.1.2 修改密码

图4.1.2-1  修改密码

管理员也可以在后台直接初始化或者修改用户密码。点击展开树形菜单“用户类型”,在组织下选择一个用户(例如“超级管理员”)后点击“修改密码”按钮,弹出如上图4.1.2-1所示操作界面。

4.1.3 移动用户

平台上的用户在使用过程中可能由于工作中的某些原因如部门的变更、职位的调动或者是离职等情况,希望或需要修改他原来所属的组织机构,此时就需要涉及到用户的组织移动功能和操作。

点击展开树形菜单“用户类型”,在组织下选择一个用户(例如“超级管理员”)后点击“移动”按钮,如下图4.1.3-1所示,操作界面以动态树形方式列出了当前平台的系统组织结构,选择需要移动到的目标组织,点击确认,即可完成人员的调动。

图4.1.3-1  移动用户的组织归属

     #region LoadDepartments(TreeNode currentNode, DMESYS_DEPARTMENT currentDept)private void LoadDepartments(TreeNode currentNode, DMESYS_DEPARTMENT currentDept){List<DMESYS_DEPARTMENT> subDepartments = null;if (currentDept != null)subDepartments = DBOSYS_DEPARTMENT.GetSubDepartments(currentDept);elsesubDepartments = DBOSYS_DEPARTMENT.GetAllTopDepartments();foreach (DMESYS_DEPARTMENT d in subDepartments){TreeNode node = currentNode.ChildNodes.Add();node.Tag = d;node.Text = d.Name;node.CollapsedImageIndex = 1;node.ExpandedImageIndex = 2;LoadDepartments(node, d);}}#endregionprivate bool MoveStaff(){if (destObj == null){lbTip.Visible = true;return false;}if(destObj is DMESYS_DEPARTMENT){DBOSYS_STAFF.MoveStaff(target, destObj as DMESYS_DEPARTMENT);return true;}return false;}

4.1.4 用户角色

或是为了系统安全性,或者为了是实际业务需求,平台上的用户通常涉及到需要设置对应的系统权限来控制其访问权限和拥有资源。

角色概念的出现和实际应用极大方便了平台权限资源的分配和管理,提高了权限分配的效率,减少了管理员重复设置权限的工作量。

具体关于角色的分类和权限的设置、分配可以参考前文中关于角色管理部分的详细描述。

点击展开树形菜单“用户类型”,在组织下选择一个用户(例如“测试”)后点击“角色”按钮,在出现的界面中以动态树形方式列出了当前平台的的角色结构。打开时系统会自动加载(显示为已勾选上)当前选中用户已经被分配或拥有的角色,如需变更该用户的角色,只要点击勾选或者取消勾选对应角色,点击确认,即可完成用户角色的设置。具体操作界面如下图4.1.4-1中所示:

图4.1.4-1  用户角色的设置

private void GrantedStaffRoles(TriStateTreeNode triStateNode){foreach (TriStateTreeNode tn in triStateNode.Nodes){if(tn.Checked && tn.Tag is DMESYS_ROLE){DMESYS_STAFF_ROLE dme = new DMESYS_STAFF_ROLE();dme.Login_Id = staff.Login_Id;dme.Role_Id = (tn.Tag as DMESYS_ROLE).Id;grantedStaffRoles.Add(dme);}GrantedStaffRoles(tn);}}private bool UpdateStaffRoles(){grantedStaffRoles.Clear();GrantedStaffRoles(rootNode);DBOSYS_STAFF_ROLE.DeleteDMESYS_STAFF_ROLE(staff);foreach (DMESYS_STAFF_ROLE sr in grantedStaffRoles){DBOSYS_STAFF_ROLE.InsertDMESYS_STAFF_ROLE(sr);}return true;}

4.1.5 用户授权

在实际工作和应用中,政府、企业和单位对管理要求在不断的变化和提高,相应的权限管理的需求就会经常调整或变动。比如时常需要调整角色的具体权限分配、设置或取消用户的某些角色,为了不同用户细微的权限区别就设置了多种角色等等。这些都给权限管理带了不便。合理的权限粒度抽象才能方便后期的管理。

该用户授权功能就是为了方便用户权限的独立授权和管理而开发的。用户可访问的模块资源与相应的操作动作权限在本平台上可根据不同用户进行独立授权。

当单一的角色概念已经不能满足或者不足以适应多变的业务需求时,就目前来说,更细粒度、更深的方向的资源分配和权限控制理念弥补了这一缺失,很好的增强了权限管理的灵活性和可扩展性。

为了更好的保证指定资源和权限能有效的允许和禁止,系统可以对相容或不相容(互斥)的资源和权限进行分离,对重要的资源和权限进行独立的授予和制约,重点突出了安全化、精细化管理的要求。比如可以分配或禁止指定用户模块资源的访问权限、可以授予或者收回指定用户的操作动作权限等。

这或许不是一个独创的理念,但肯定是一个可以看得见效果的突破和飞跃。完全做到了允许和禁止所有层面的资源访问和行为动作。同时,系统以禁止授权高于允许授权的优先等级制度,有效的做到了权限资源的细粒度分发和回收。

点击展开树形菜单“用户类型”,在组织下选择一个用户(例如“演示”)后点击“授权”按钮,在出现的界面中以动态树形方式列出了当前平台中所有模块和对应动作的资源结构。该资源结构是根据模块管理的相关配置加载的,模块允许的权限动作都会在该资源结构中加载。打开页面时会自动加载(显示为已勾选上)当前选中用户已经分配拥有的模块资源和权限动作。点击勾选或者取消勾选对应的模块资源和权限动作,点击确认,即可完成对用户的独立授权。具体操作界面如下图4.1.5-1中所示:

图4.1.5-1  用户授权

     private void ConfigureTreeView(){rootNode.CheckboxVisible = false;rootNode.IsContainer = true;rootNode.ImageIndex = 0;rootNode.SelectedImageIndex = 0;rootNode.Expand();tvStaffModule.SuspendLayout();tvStaffModule.Nodes.Add(rootNode);LoadModuleTypes(rootNode, null);LoadModules();LoadGrantedModuleRights(rootNode);UpdateNodesState(rootNode);tvStaffModule.ResumeLayout();}private void AuthorizeStaffRights(TriStateTreeNode triStateNode){foreach (TriStateTreeNode tn in triStateNode.Nodes){if (tn.ImageIndex == 7 && tn.CheckState == System.Windows.Forms.CheckState.Checked){DMESYS_STAFF_MODULE_RIGHT_GRANT mr = new DMESYS_STAFF_MODULE_RIGHT_GRANT();mr.Right_Id = tn.Name;mr.Login_Id = staff.Login_Id;smrGranted.Add(mr);}AuthorizeStaffRights(tn);}}private bool UpdateGrantedRoleRights(){bool flag = false;smrGranted.Clear();AuthorizeStaffRights(rootNode);DBOSYS_STAFF_MODULE_RIGHT_GRANT.DeleteDMESYS_STAFF_MODULE_RIGHT_GRANT(staff);foreach (DMESYS_STAFF_MODULE_RIGHT_GRANT mrg in smrGranted){DBOSYS_STAFF_MODULE_RIGHT_GRANT.InsertDMESYS_STAFF_MODULE_RIGHT_GRANT(mrg);flag = true;}return flag;}

转载于:https://www.cnblogs.com/iPragmatic/p/5809558.html

权限管理系统之用户管理相关推荐

  1. 若依权限管理系统(用户管理)

    一.用户管理 权限管理子系统中最直接的权限控制对象是用户,我们要控制用户对资源的访问权限 核心业务分析 这里的用户为系统管理员添加的用户,是系统管理员,管理员在添加这个账户,会为账户设置一些基础信息, ...

  2. linux服务器用户组和权限管,linux 用户管理,用户权限管理,用户组管理

    linux 用户管理,用户权限管理,用户组管理 一:ls -l 命令 解释 第个d表示是目录,如果是文件是-,如果是连接是l 第2到4个 rwx 表示创建者的操作权限 r 读,w 写,x 执行 第5到 ...

  3. 【学生管理系统】用户管理之用户登录

    目录 2. 用户管理 2.1 环境搭建 2.1.1 前端环境 2.1.2 后端环境(9000) 2.2 用户登录 2.2.1 需求 2.2.2 后端实现 2.2.3 前端实现 2.3 首页 2.3.1 ...

  4. 制作CRM管理系统03(用户管理)

    目录 一.用户管理界面显示用户信息 1.1.前端HTML 1.1.1.通过axios发送请求到Servlet获取用户列表数据 1.1.2.将Servlet响应的数据通过v-for指令显示到table上 ...

  5. 服务器多账户管理系统,统一用户管理解决方案

    一.方案概述 日常工作中,使用人员在使用各应用系统时都要做登录操作,需要记住每个系统的登录口令:对于系统管理员,人员的新增.调离或退休都需要到各个系统中都要进行重新配置.若操行不及时或遗漏,就会带来系 ...

  6. linux 权限控制(用户管理、用户组管理、文件权限)

    文章目录 1. 用户管理 1.1 useradd 添加新用户并在home目录下创建对应用户的目录 1.2 passwd 设置用户密码 1.3 id 查看用户是否存在 1.4 cat /etc/pass ...

  7. 一步一步使用Ext JS MVC与Asp.Net MVC 3开发简单的CMS后台管理系统之用户管理(1)...

    应用程序的基本框架已经搭建好了,现在要做的是完成一个个的功能模块.先从简单做起,完成用户管理模块,该模块主要功能是使用一个Grid显示用户信息,并使用RowEditing进行用户的编辑.添加操作.Gr ...

  8. 权限管理系统之模块管理

    4.4 模块管理 模块是平台功能的单元,是源码和数据的集合体. 模块管理(菜单.动作.数据)是整个平台中框架功能体现的核心.整个平台内的各个功能模块都是在此进行配置的. 这个功能模块主要是面向于平台上 ...

  9. mysql 用户管理系统_mysql 用户管理

    MySQL账户管理 在我们之前登录MySQL的时候我们都是直接使用的root用户,root用户属于数据库系统中的超级管理员,有权限对mysql进行任何想要做的操作. 如果在生产环境下操作数据库时也是全 ...

最新文章

  1. Javascript history pushState onpopstate方法做AJAX SEO
  2. 在一个字符串寻找另一个字符串,并且输出短字符串头字母在长字符串的下标...
  3. 动态规划之----最长公共子序列
  4. RobotFramework自动化框架—数据驱动测试
  5. CodeForces - 706D Vasiliy's Multiset(字典树删除操作)
  6. POJ 1953 (DP)
  7. 游族辟谣公司内斗CEO被投毒住院,警方通报带来光速反转?
  8. 摩拜单车开锁实现原理剖析
  9. 免费下载“百度文库”文档方法,简单而强大~
  10. 北大青鸟汉字注释机内码_汉字与机内码相互转换程序
  11. 关于赚钱的 6 个重要认知,多数人都不知道
  12. 泰坦尼克号数据挖掘项目实战——Task6 模型调优
  13. HashMap原理以及TreeMap和Collections工具类(2022.6.10)
  14. 窗口最小化后不出现在任务栏上
  15. 粒子滤波 机器学习_用机器学习研究粒子物理学中的开放性问题
  16. 苹果6plus几核处理器_全是回忆!苹果12年进化史:21部iPhone你用过哪一款?
  17. Drivers: CH340和CH341系列
  18. 有没有一种手机桌面便签记事本可以把日常安排写在上面并提醒自己
  19. 03.Redis安装与启动
  20. JAVA中String与Date类型互转

热门文章

  1. canvas 实现雷达图
  2. Amoeba+Mysql实现读写分离+java连接amoeba
  3. 互联网服务应用协议设计
  4. [转]apache MPM介绍
  5. ubuntu tftp 服务器故障排除一例
  6. notepad拼心形_配置基于NotePad++工具下的C#开发环境
  7. go语言编程项目_一个项目需要多少种编程语言?
  8. 55种数据可视化开源工具_6种用于撰写书籍的开源工具
  9. django orm_Django ORM简介
  10. JavaScript实现继承的几种方式