权限管理系统之用户管理

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);
            else
                subDepartments = 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);
            }
        }
        #endregion

        private 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;
        }
时间: 2024-10-07 11:07:27

权限管理系统之用户管理的相关文章

权限管理系统之组织管理

概述 基于角色的用户权限管理系统(RBAC)是目前公认的解决大型企业的统一资源访问控制的有效方法. 本套权限管理组件不局限于传统的权限,角色,用户三者的关系,在减小授权管理的复杂性基础上,通过独特的允许.禁止资源控制思想,增强了授权的灵活性.既可以按照角色统一授权,也可以对人员独立授权.权限可粗粒度的分为模块权限,亦可细化到具体操作资源和功能(菜单.按钮.数据).能够指根据系统管理员设置的安全规则或者安全策略,能够达到使用户可以访问且只能访问自己被授权的资源,并拒绝访问被禁止的指定资源. 平台配

ubuntu用户管理与权限操作实例

ubuntu用户管理与权限操作实例 昨天在转载此文时提到都要把文件及目录权限的操作也会独立成文来给大家介绍,今天特地学习了用户管理和权限操作的例程,现总结如下.这些命令基本都是我在自己电脑上运行过后能够实现此功能,我才把他们加进来,希望对大家有所帮助,也希望和大家多交流^_^ 一个实例 例子:假设有两个用户bill和jane,他们都有音乐CD集,并要创建一个共享目录,在该目录下他们各自存储自己的音乐文件.此时用户bill通过sudo获得了超级用户权限. 首先,创建一个以bill和jane为成员的

通用权限管理系统与第三方前端控件集成实现的多种选择功能

在项目中使用使用了通用权限管理系统的底层代码,同时配合前端控件,实现多种输入选择的功能: 1:直接输入框选择的 实现在输入字符时自动去后台检索,将匹配项显示在下拉框中,后台对应的实现代码截图: 2:输入框,弹出窗口选人的. 这个功能可实现在点击输入框右侧的按钮时弹出一个窗口,在窗口中点击行时将会将改行对应的项回填到输入框中,窗口中的实现比较简单,有些难度的时点击行时的事件,下面是JS代码部分. 弹出窗口中的双击事件 //双击向top.frmright的窗口传值 function onDblCli

《分享》客户管理系统解决用户流失的3个方法!

在网上经常看到有人问"用户流失的原因","如何防止用户流失".其实问题根源就在于用户管理方法不对,很多公司已经意识到这一点,并开始用先进的用户管理系统解决问题.那么,用户管理系统如何解决用户流失问题?下面就用几个必备功能进行实例说明,希望能为大家解决用户流失问题提供一些参考.     1.用户批量导入 很多企业的用户信息,经常分散在各种表格.手机.QQ.名片.纸上--查询.统计和管理起来,非常麻烦,时间久了这些用户就被慢慢遗忘或丢失. 用户管理系统在用户管理方面功能

linux: 用户管理,文件传送

Linux中添加用户并且使用户获得sudo权限 1,用户管理 adduser myname : 添加用户 用户添加会有密码设置, 添加后的用户还不具备sudo权限,使用下命令 usermod -a -G sudo myname :添加用户到sudo组 使用sudo -s看权限是否成功 原文地址:https://www.cnblogs.com/yymor/p/10212523.html

ABP+AdminLTE+Bootstrap Table权限管理系统第十一节--bootstrap table之用户管理列表

这张开始bootstrap table,引入项目有两种方法,一种是直接去官网下载 地址:http://bootstrap-table.wenzhixin.net.cn/ 另一种是Nuget引入. 然后就是把js引用到项目中来,其实Bootstrap js 还有jQuery我们在模板页已经引进了,这里只需要引入bootstrap table相关的js以及中文包就可以了 <link href="~/Scripts/Content/bootstrap-table/bootstrap-table.

Asp.Net Core 项目实战之权限管理系统(7) 组织机构、角色、用户权限

0 Asp.Net Core 项目实战之权限管理系统(0) 无中生有 1 Asp.Net Core 项目实战之权限管理系统(1) 使用AdminLTE搭建前端 2 Asp.Net Core 项目实战之权限管理系统(2) 功能及实体设计 3 Asp.Net Core 项目实战之权限管理系统(3) 通过EntityFramework Core使用PostgreSQL 4 Asp.Net Core 项目实战之权限管理系统(4) 依赖注入.仓储.服务的多项目分层实现 5 Asp.Net Core 项目实

Linux运维六:用户管理及用户权限设置

Linux 系统是一个多用户多任务的分时操作系统,任何一个要使用系统资源的用户,都必须首先向系统管理员申请一个账号,然后以这个账号的身份进入系统.用户的账号一方面可以帮助系统管理员对使用系统的用户进行跟踪,并控制他们对系统资源的访问:另一方面也可以帮助用户组织文件,并为用户提供安全性保护.每个用户账号都拥有一个惟一的用户名和各自的口令.用户在登录时键入正确的用户名和口令后,就能够进入系统和自己的主目录. 实现用户账号的管理,要完成的工作主要有如下几个方面: · 用户账号的添加.删除与修改. ·

Asp.Net Core 项目实战之权限管理系统(6) 功能管理

0 Asp.Net Core 项目实战之权限管理系统(0) 无中生有 1 Asp.Net Core 项目实战之权限管理系统(1) 使用AdminLTE搭建前端 2 Asp.Net Core 项目实战之权限管理系统(2) 功能及实体设计 3 Asp.Net Core 项目实战之权限管理系统(3) 通过EntityFramework Core使用PostgreSQL 4 Asp.Net Core 项目实战之权限管理系统(4) 依赖注入.仓储.服务的多项目分层实现 5 Asp.Net Core 项目实