95992828九五至尊2

Winform开发框架之权能管理系列的精雕细刻882828九五至尊手机版,Winform开发框架之权能管理种类功效介绍

二月 21st, 2019  |  882828九五至尊手机版

权限管理连串,一向是成百上千Mis系统和局地宽广的管制种类所须要的,所以一般可以看做独立的模块举办支付,须求的时候举行整合即可,不要求每趟开首开发,除非尤其的种类须求。小编在Winform开发框架介绍中的散文中,很早以前在《Winform开发框架之权能管理种类》就写过关于自己的通用权限管理种类的局地介绍,当时那些版本的要么古板体制的,界面如下所示。

权力管理系列的重中之重特征总括: 
1) 中度集成的权力系统、独立模块,能高效组合利用。
2) 符合权限的国际通用标准,基于RBAC(基于角色的访问控制)的角色权限控制。
3) 多数据库架构协助,内置扶助SqlServer、Oracle、MySql、SQLite、Access数据库。
4) 用户管理基于分级管理理念,集团成员公司、事业单位处室/局级可独自管理人士/角色等数码。
5) 用户接入的各样应用系统,均可落成用户登陆日志、操作日志的笔录。
6) 管理员可以决定登陆用户的好坏名单列表,完成严谨的登陆控制管理。
7) 权限系统也是基于《Winform开发框架》的老道架构,稳定连忙、更易使用和精通。
8) 权限管理连串文档齐全、完善的拔取支撑和购并项目经验,开发项目更有保管。

882828九五至尊手机版 1 

权力管理种类验证:
《Winform开发框架》、《WCF开发框架》和《混合式开发框架》三个框架是我们透过多年的项目积累,吸收过多框架产品客户的宝贵意见,反复提炼优化而成的。在那七款支出框架中,我都利用到了一个《通用的权位管理种类》(简称权限管理种类),这么些作为贰个独自的种类模块,但又有什么不可组合到拥有的框架产品和品种中,完成高效的权柄管理和控制。
权限的分配和管理,基本上是各样事情系统须要考虑的东西,而这个常用的事物,在整个开发框架中,把它看做一个单身的模块,既方便维护管理,也留有接口很简单开展集成,那样能够在类型中频仍进行利用。
权限管理体系关键的效劳包含有:用户管理、协会机构管理、成效管理、角色管理和权限分配管理、菜单管理、系统项目管理、登录日志管理、操作日志管理、系统黑白名单管理等作用模块。对于每新增3个体系,大家只必要在权力管理连串中增添贰个连串类型定义,以及有关的功用、菜单数据即可,分外方便管理。

出于自己的Winform开发框架必要,作者把权限管理体系、字典管理模块、分页控件等都扩充了支撑古板体制、DotNetBar控件样式,以及DevExpress控件样式。那些样式的界面从前也早已介绍不少了,本文首要介绍使用DevExpress控件样式的权杖管理体系,对一些新的功效增加以及周全,包含系统项目管理、菜单管理、成效管理、登陆日志管理等模块举行介绍。

882828九五至尊手机版 2

本权限管理种类包涵用户管理、协会机构管理、剧中人物管理、系统类型定义、功效管理、菜单管理、用户登录日志管理,以及对相应对象的权能决定管理等职能。整个权限管理种类是依照RBAC(基于角色的访问控制)格局展开权力控制,是二个单身的权力管理种类,要求的时候事情连串与之举行整合即可,完成通用模块的迅猛使用和归并管理等地点。

① 、用户管理

① 、系统项目管理

系统项目,是我们在权力系统中定义的一个系统分类,对于不一样的系统,大家透过那一个概念进行区分,可以完毕五个业务系统的管制(纵然一般景观下,大家只是管理3个系统)。系统项目管理界面如下所示。

882828九五至尊手机版 3

其一目的的治本,以前向来在权力系统中,通过修改数据库举办起始化,然则小编以为把它当做多少个独门的数额开展维护,然后为职能定义、菜单、登陆日志等和系统项目涉及的数量进行安装管理,应该是相比较有利的。

因为,功效定义是依照某些系统而充实的一一日千里成效决定ID的定义,方便已毕按钮级别和多少级其余权位决定的底子。

食谱的定义,是用来落到实处基于动态配置功用模块的菜系,引入该模块的初衷是用来便宜动态配置Winform或许Web的效果菜单,那么些也是不一样的系统肯定有差其余菜系了。

登陆日志管理,是用来便宜记录来自业务系统对权限系统接口的最主要接口调用的记录,如登六 、修改密码等操作,一般景况下,大家用不一致的作业连串来分别它们的数码。

① 、用户登陆

882828九五至尊手机版 4

在权力管理连串登录界面输入账号和密码后(暗中认同账号admin,密码为空),即可进入权限管理体系的主界面,权限管理连串紧要的作用包含有:用户管理、社团机关管理、效率管理、角色管理和权力分配管理、菜单管理、系统项目管理、登录日志管理、操作日志管理、系统黑白名单管理等功用模块。

二 、菜单管理

刚才说到,那里的菜谱管理,是指用来兑现基于动态配置作用模块的菜单,用来落到实处基于Winform、Web菜单的并轨统一,对于差别的系统,菜单定义是见仁见智的,由此他们是基于有个别系统项目上边的数量管理。

为了实用管理菜单数据,作者把菜单的关联用树形控件举办呈现,并经过SplitContainer控件完结布局的客体切分,可以兑现自由拖动,界面效果如下所示。

882828九五至尊手机版 5

菜单的数量彰显,左侧使用了树形控件,数据经过递归形式展开绑定。左边数据是透过自小编的分页控件举行多少绑定,并且绑定的数额是由此了层级的缩进格式化了的。

树菜单绑定的为主递归代码如下所示。

        /// <summary>
        /// 绑定树形数据
        /// </summary>
        private void InitTree()
        {
            treeView1.Nodes.Clear();
            treeView1.BeginUpdate();
            Cursor.Current = Cursors.WaitCursor;

            //先获取系统类型,然后对不同的系统类型下的菜单进行绑定显示
            List<SystemTypeInfo> typeList = BLLFactory<SystemType>.Instance.GetAll();
            foreach (SystemTypeInfo typeInfo in typeList)
            {
                TreeNode pNode = new TreeNode();
                pNode.Text = typeInfo.Name;//系统类型节点
                pNode.Name = typeInfo.OID;
                pNode.ImageIndex = 0;
                pNode.SelectedImageIndex = 0;
                this.treeView1.Nodes.Add(pNode);

                string systemType = typeInfo.OID;//系统标识ID

                //绑定树控件
                //一般情况下,对Ribbon样式而言,一级菜单表示RibbonPage;二级菜单表示PageGroup;三级菜单才是BarButtonItem最终的菜单项。
                List<MenuNodeInfo> menuList = BLLFactory<SysMenu>.Instance.GetTree(systemType);
                foreach (MenuNodeInfo info in menuList)
                {
                    TreeNode item = new TreeNode();
                    item.Name = info.ID;
                    item.Text = info.Name;//一级菜单节点
                    item.Tag = info;//对菜单而言,记录其MenuNodeInfo到Tag中,作为判断依据
                    item.ImageIndex = 1;
                    item.SelectedImageIndex = 1;
                    pNode.Nodes.Add(item);

                    AddChildNode(info.Children, item);
                }
            }

            Cursor.Current = Cursors.Default;
            treeView1.EndUpdate();
            this.treeView1.ExpandAll();
        }

        private void AddChildNode(List<MenuNodeInfo> list, TreeNode fnode)
        {
            foreach (MenuNodeInfo info in list)
            {
                TreeNode item = new TreeNode();
                item.Name = info.ID;
                item.Text = info.Name;//二、三级菜单节点
                item.Tag = info;//对菜单而言,记录其MenuNodeInfo到Tag中,作为判断依据
                int index = (fnode.ImageIndex + 1 > 3) ? 3 : fnode.ImageIndex + 1;
                item.ImageIndex = index;
                item.SelectedImageIndex = index; 
                fnode.Nodes.Add(item);

                AddChildNode(info.Children, item);
            }
        }

菜单的列表数据,通过分页控件绑定的代码如下所示。

        /// <summary>
        /// 根据查询条件构造查询语句
        /// </summary> 
        private string GetConditionSql()
        {
            SearchCondition condition = new SearchCondition();
            condition.AddCondition("Name", this.txtName.Text, SqlOperator.Like);
            condition.AddCondition("FunctionId", this.txtFunctionId.Text, SqlOperator.Like);
            condition.AddCondition("Visible", this.txtVisible.Checked ? 1 : 0, SqlOperator.Equal);
            condition.AddCondition("WinformType", this.txtWinformType.Text, SqlOperator.Like);
            condition.AddCondition("Url", this.txtUrl.Text, SqlOperator.Like);

            string where = condition.BuildConditionSql().Replace("Where", "");

            return where;
        }

        /// <summary>
        /// 绑定列表数据
        /// </summary>
        private void BindData()
        {
            //entity
            this.winGridViewPager1.DisplayColumns = "Name,Icon,Seq,FunctionId,Visible,WinformType,Url";
            #region 添加别名解析

            this.winGridViewPager1.AddColumnAlias("ID", "");
            this.winGridViewPager1.AddColumnAlias("Name", "显示名称");
            this.winGridViewPager1.AddColumnAlias("Icon", "图标");
            this.winGridViewPager1.AddColumnAlias("Seq", "排序");
            this.winGridViewPager1.AddColumnAlias("FunctionId", "功能ID");
            this.winGridViewPager1.AddColumnAlias("Visible", "菜单可见");
            this.winGridViewPager1.AddColumnAlias("WinformType", "Winform窗体类型");
            this.winGridViewPager1.AddColumnAlias("Url", "Web界面Url地址");

            #endregion

            string where = GetConditionSql();
            List<MenuInfo> list = BLLFactory<SysMenu>.Instance.FindWithPager(where, this.winGridViewPager1.PagerInfo);
            list = CollectionHelper<MenuInfo>.Fill("-1", 0, list, "PID", "ID", "Name");
            this.winGridViewPager1.DataSource = new WHC.Pager.WinControl.SortableBindingList<MenuInfo>(list);
            this.winGridViewPager1.PrintTitle = "功能菜单信息报表";
        }

食谱的编排界面如下所示。

882828九五至尊手机版 6

本篇主假如介绍菜单的田间管理,对于菜单的动态加载管理,作者会在另外一篇Winform开发框架中举办介绍。菜单定义数据里面的效劳控件ID,是发源作用模块的效果控件ID,是用来控制差别用户所能访问的菜系能源的。

二 、用户分级管理

权力管理系列的用户管理是依据分级管理理念,公司成员集团、事业单位处室/局级可单独管理人士/剧中人物等消息。
系统分了两级管理员用户:一流管理员和同盟社管理员。超级管理员可以管理整个公司大概全部连串的人士和血脉相通消息(包涵公司机关、角色、登陆日志、操作日志等消息的各自);公司管理员可以管理分子集团、事业单位处室/局级这样的社团机关的人手和相关新闻。
分级管理社团机构、角色、用户等连锁数据,可以收缩管理员的相干工作,升高工作功用,并能增强权力管理系统对权限的主宰和能源分配等管理,进步用户的也好。
882828九五至尊手机版 7

3、效率管理

作用定义,也是基于某些系统项目上边的,对于差距的政工系统,我们得以集中放在一个权力管理种类里头进行保管,不过意义的概念,依照不一样的系统项目进行区分即可,那样的靶子是用来贯彻各类公司应用的有用结合。

职能的管住,是整个权限系统的宗旨,因为经过对她们的概念,以及权限分配,都会影响各类角色用户可访问的作用;功效定义的数量,其实也是二个树形结构,可以用树控件举办浮现出来,如下所示。

882828九五至尊手机版 8

 

叁 、新建/编辑用户

在系统用户新闻模块里面,能够在公司机关树右键“新建”恐怕“新建”按钮上,触发弹出新建用户的操作,如下界面所示。
在新建用户的界面上,输入必须的用户名、真实姓名、所属集团、私自认同机构/部门等音信,其他音信可选输入。用户的所属机构、所属剧中人物、可操作功能,在末端的介绍操作中展开分红管理,新建用户不需求管住那些消息。

882828九五至尊手机版 9

在用户基本音讯界面里面,用户“所属集团”,是三个下拉的树形列表,里面根据社团机关的分级进行显示公司音讯,如下所示。

882828九五至尊手机版 10

“暗中同意机构/部门”是按照用户挑选的“所属集团”举办过滤的,依据用户挑选所属集团,列出该公司下的保有社团机构树形列表供采纳,如下所示。

882828九五至尊手机版 11

编纂用户界面和新建用户界面呈现,在界面上出示已经录入的用户新闻和用户的涉及音讯,包含所属部门、所属剧中人物、可操作作用等。

四 、日志管理

大家了然,一般权限系统,管理用户很普遍的,因而用户的登陆日志,一般情状下是由权力管理种类记录即可,
如每一遍用户登陆的时候,大家记录用户的登陆日志;假设用户修改密码,大家也做3个非常紧要记录,那样对于在事情连串端的管理,我们就不要求管理他们的登陆方面的风云了。

日记管理分为五个部分,3个是通过权限管理连串自己的报到入口举行登录的,一个是透过与之集成的事务连串,通过API调用格局展开登录验证的,
他们的报到接口基本雷同,只是有个别数据不一样。

            try
            {
                //判断用户是否登录成功
                string ip = NetworkUtil.GetLocalIP();
                string macAddr = HardwareInfoHelper.GetMacAddress();

                string identity = BLLFactory<User>.Instance.VerifyUser(this.txtLogin.Text, this.txtPassword.Text, "WareMis", ip, macAddr);
                if (!string.IsNullOrEmpty(identity))
                {
                    //进一步判断用户角色
                    if (BLLFactory<User>.Instance.UserInRole(this.txtLogin.Text, RoleInfo.AdminName))
                    {
                        MessageUtil.ShowTips(string.Format("用户【{0}】身份验证正确", this.txtLogin.Text));
                    }
                    else
                    {
                        MessageUtil.ShowWarning("该用户没有管理员权限");
                        return;
                    }
                }
                else
                {
                    MessageUtil.ShowWarning("用户名或密码错误");
                    return;
                }
            }
            catch (Exception err)
            {
                MessageUtil.ShowError(err.Message);
            }

权力管理系统对日志进行联合保管和彰显,具体界面如下所示。

882828九五至尊手机版 12

凡事权限管理种类,目的进步系统开发进度和功能,由此通过单独开发,模块重用,易于集成等方法贯彻大家生儿育女功能的最大化。

四 、用户导入

为了火速录入系统用户消息,权限管理体系提供Excel的多寡批量导入操作,如下所示。
882828九五至尊手机版 13
在用户管理列表的“导入”操作按钮中触发,弹出2个通用的Excel数据导入界面,里面钦点了导入数据的“Excel模板”,用户依照模板字段列输入相关的信息,然后经过“浏览”按钮触发多少的显示,倘若认同无误,即可开展“保存数据”的操作。
882828九五至尊手机版 14

伍 、用户导出

权限系统的用户数量,也得以通过“导出”按钮举行用户数据的导出操作,如下所示。

882828九五至尊手机版 15

882828九五至尊手机版 16

⑥ 、用户查询

用户的查询,可以经过按集体机构查看、按剧中人物查看和基于查询条件查询,前两者通过树形列表,方便用户疾速查询用户,由于用户是分级管理,由此差其他卖家管理员,看到的团伙部门和脚色数据有所分歧,他们可以管理自身管辖内的用户数据。

1) 按集体单位查询

882828九五至尊手机版 17

2) 按角色查询

882828九五至尊手机版 18

3) 依据查询条件查询

882828九五至尊手机版 19

② 、协会机关管理

壹 、协会单位列表

权力管理连串中的协会部门列表,是多个层级的树形列表,基本的节点可以分成公司、公司、部门和工作组那多少个级别,在团队单位树中挑选机构后,界面中间及右侧区域会突显详细的社团机关音信和有关数据。

882828九五至尊手机版 20

② 、新建/编辑协会机构

新建社团机关,可以在左边的树形列表上的右键菜单上操作,也能够在顶部的“添加”按钮上展开操作。新建社团机关音信,处在同贰个界面里面,用户输入相关数据保存即可。

882828九五至尊手机版 21

三 、包括用户管理

社团机构得以透过“包蕴用户”的情势,把系统其他机构的用户纳入到该机关管理范围中,那样,若是分配给该机构的权限,自动会授权给这么些包括进来的用户,完毕用户权限的丰硕管理。
882828九五至尊手机版 22 
单击“蕴涵用户”界面的“添加”按钮,弹出二个“采纳人员”的对话框,对话框界面里的用户数据是依照单位和角色进行分拣的,用户可以在左边的树列表中火速查看内定范畴内的用户数据,右侧的列表中有勾选项目,勾选后单击“添加采取”即可添加到底层的用户拔取区域,也足以在采纳区域里面删除指定用户采纳,界面如下所示。

882828九五至尊手机版 23

三 、角色管理

剧中人物是权力系统管理里面最好紧要的一部分,整个序列符合权限的国际通用规范,基于RBAC(基于角色的访问控制)的剧中人物权限决定,那样和权杖相关的音信,都以经过角色进行关联,由此剧中人物还索要管住和用户之间的涉嫌、和集体机关之间的涉及、和可操作作用之间的关联等等。

一 、角色基础新闻保管

882828九五至尊手机版 24

二 、包括机构管理

882828九五至尊手机版 25

三 、包罗用户管理

和团协会部门涵盖用户成效雷同,弹出选拔用户对话框,选用相应的用户列表新闻。

四 、可操作功用

882828九五至尊手机版 26

肆 、系统类型定义

系统类型定义,是用作区分三个工作应用系列的标识,权限系统协理三个事情使用系统的存续,固然暗中同意是2个,可是足以依照必要开展扩充,使得权限管理系统管理的层面更大,完成全体事务种类共享壹个权力管理连串的布局。

① 、系统项目列表

882828九五至尊手机版 27

贰 、新建/编辑系统项目

882828九五至尊手机版 28

五 、功效管理

效益管理,是工作使用连串的权柄控制最小单元,可以用作决定体系的按钮、菜单等界面成分,也可以用作决定显示或隐匿的一些字段的操作。

壹 、成效列表

882828九五至尊手机版 29

贰 、新建/编辑功能

882828九五至尊手机版 30
为了便于一回性添加三个职能单元,可以因而“批量丰硕”操作进行作用的批量加上,批量添加界面如下所示。
882828九五至尊手机版 31

③ 、可操作角色

882828九五至尊手机版 32

陆 、菜单管理

壹 、菜单列表

相似Winform程序中,菜单都以平素写在主程序中的,那样对于日常性修改和保证菜单的相干新闻,大概有所不便,而且对于插件化的连串使用,新增菜单是周边的事体,那样就须要对菜单进行动态配置管理了,通过后台菜单的配置和权力的钦定,能够完毕菜单的动态加载和权杖验证。
故此菜单也是权力分配的一部分,为了实用管理菜单财富,我们把菜单放到权限管理连串中进行管理控制,可依照用户权限进行动态控制展现。

882828九五至尊手机版 33

设定好菜单的图标和Winform窗体类型,就能在Winform框架中动态创设菜单消息了。菜单的图形放置在系统的相对目录下即可。

882828九五至尊手机版 34

882828九五至尊手机版 35

贰 、新建/编辑菜单

新建或然编辑的菜单界面如下所示,除了需求输入“突显名称”外,还索要采纳“上级菜单”,假使菜单需求展开权力决定,那么在“功能控件ID”输入须要的控制键即可,如下紫铜色框选部分。

882828九五至尊手机版 36

菜单的“上级菜单”是2个下拉的树状列表,方便呈现层次关系并开展选取。

882828九五至尊手机版 37

⑦ 、系统黑白名单

在一般的权杖系统内部,只怕时时会师到系统的黑名单大概白名单的拦截成效。在一般
权限系统里头,常见的黑名单就是禁止用户在好几IP上登录体系,白名单就是允许用户只在一些IP上登录系统。本散文主要介绍在自作者的权位系统之中,怎样贯彻这么些黑白名单的效用,以及介绍在其中使用到的IP相比较操作,IP段判断等操作代码。

① 、黑白名单列表

要水到渠成黑名单的阻挠和白名单的放行,大家要求进行名单的配备操作,大家把相关的安插放到列表里面举办显示,能够增进八个黑名单或许白名单,如下界面所示。

882828九五至尊手机版 38

贰 、新建/编辑黑白名单

能够在黑白名单列表上单击“新建”按钮进行添加一条记下,只怕在已有记录上双击黑白名单可以开展编制,界面如下所示。

882828九五至尊手机版 39

通过“添加用户”按钮,在弹出的抉择人员界面中,内定黑白名单的人士列表即可。

③ 、系统登录拦截效果

882828九五至尊手机版 40

882828九五至尊手机版 41

⑧ 、用户登陆日志

一 、登陆日志列表

882828九五至尊手机版 42

玖 、用户操作日志

在不少政工种类之中,数据是很敏锐的,尤其对于有个别充实、修改、删除等要害的操作,固然能在框架层面的支撑基础上,以最少的代码完结紧要表的日志记录,那么是一件十一分值得庆贺的事体,也可以为大家客户的数量提供关键的日记跟踪,甚至是数据復苏的参考。
透过权限管理体系的支撑和《Winform开发框架》的底部帮助,业务系统模块,只必要经过一行代码就能兑现业务表的日志记录,那对我们开发新的事体模块,功能可以增强广大,同时也能给客户提供更好的数量支撑服务。通过在权力系统模块里面配备参数和出示操作日志记录,可以给工作支付提供基础性的支付框架援救。

一 、用户操作日志列表

882828九五至尊手机版 43

② 、操作日志的参数设置

在操作日志的参数配置列表里面,我们得以添加一些业务表操作日志配置,然后通过在支付时刻,一行代码钦定记录日志操作,即可完毕操作日志的笔录。
882828九五至尊手机版 44

③ 、查看详细操作日志

1) 修改记录的操作日志

882828九五至尊手机版 45

2) 伸张记录的操作日志

882828九五至尊手机版 46

⑩ 、系统如胶似漆管理

882828九五至尊手机版,壹 、项目中融为一炉权限系统登陆

882828九五至尊手机版 47

八面见光代码就是调用该程序集的接口API运行权限系统的登陆界面,如下所示。

882828九五至尊手机版 48

② 、项目中合拢权限控制

1)系统登陆及权限获取

882828九五至尊手机版 49

2)项目权限控制

882828九五至尊手机版 50

十一 、提供基于各个数据库的结合

权力系统和其他框架一样,提供基于两种数据库(SqlServer/Oracle/MySql/SQLite/Access等数据库)的重组扶助。固然大家在事实上项目中,一般接纳一种数据库举办处理,不过不一致的体系,拔取的数据库类型大概不一样,本Winform开发框架为了有利于演示和壮大的急需,内置资助了SqlServer/Oracle/MySql/
SQLite
/Access,更加多的数据库,也足以经过扩大数据库访问基类的办法进行越来越多数据库的支撑。

882828九五至尊手机版 51

万事权限管理系列的数据库访问,可以手动配置数据库类型,对于同样种数据库,也足以把数据存储分开储存,如工作数据存储在3个数据库,权限管理控制存储在别的三个数据库那种方法。

Your Comments

近期评论

    功能


    网站地图xml地图