通用权限管理系统组件 (GPM - General Permissions Manager) 不改数据库、甚至不写代码就集成铜墙铁壁权限管理组件...

为什么80%的码农都做不了架构师?>>>   hot3.png

   越成熟的东西,越牛X的东西,越简单才对,简单才是硬道理,苹果的手机只有少数几个按键,苹果Ipad也很少的按钮,甚至连苹果的笔记本键盘都少一排,通用权限管理系统组件的目的并不是为了把简单的问题复杂话,而是把复杂的问题更加简化,他的集成任何一个系统甚至是不用写代码,或者写很少的代码就可以了,简化重复开发,彻底复用劳动成果是我们的最终奋斗目标

 

一、我们的目标

   1:多个业务系统可以用统一的后台管理就可以了。

   2:多种不同数据库的业务系统,用统一的一个后台管理系统就可以了。

   3:不管是简单的,还是复杂的权限管理要求,都用一套后台管理就可以了。

   4:不管是大陆的,台湾的,相关的,日本的,美国的业务系统,都用一套后台管理就可以了。

   5:不管是B\S的还是C\S的,都用一套后台管理系统就可以了。

   6:不管是个人,还是创业公司,还是上市公司,不管是做医疗的,政府的,企业的,都用一套后台管理系统就可以了。

 

二、源码销售人群

   1:想提高自己的系统架构能力,想拿高薪的程序开发人员。

   2:学习入门爱好者,想见识一下相对正规的大中型软件项目的,想学习成为一个体系的整套的软件项目的。

   3:将来自己想接项目,创业,或者尝试自己承接软件项目想锻炼自己的。

   4:软件公司开发的项目多了,想规范化管理的,把多个项目都集中统一管理的。

   5:客户实用的各种业务系统多了,多儿杂,想统一规范化管理的。

   6:公司内部人员流动过,懒得进行正规培训的直接模仿通用权限管理的一整套开发模式就可以,少一些烦恼了。

 

三、权限系统集成:不改数据库

   1:权限系统有自己独立的数据库,不与任何业务系统有关系,他的设计思想是,任何一个系统至少分2个库进行设计,一个是业务数据库,一个是权限数据库,互相不影响互相不干扰,2个都是相对独立的。

   2:权限系统的数据库既可以独立部署,也可以放在业务数据库里合并,也并不是非要100%分2个数据库,我们是主张分2个数据库。

   3:所以需要集成别人的系统,只是额外挂了一个权限数据库,或者导入了一个权限数据库,对现有的业务系统不进行大的改动也可以了。

 

四、权限系统集成:几乎不写代码

   1:权限系统的每个窗体都可以独立呼叫。

   2:权限系统是源码有偿公开的,也可以直接调用源码。

   3:权限系统的DLL,只有3个,只要引用到自己的项目里就可以了,非常方便调用。

   4:需要把配置文件复制过来,小改一下。

   5:通用权限管理系统组件,帮你开发测试好了接近100个非常通用的,与业务逻辑无关的信息管理系统共性的窗体,这个足够可以节约几个月的开发时间,而且还可以反复利用,铜墙铁壁的健壮的优质代码,一劳永逸的解决问题。

 

五、权限系统集成:集成权限系统组件的最最简单的例子代码

   1:运行效果如下(几乎不写代码集成13个功能点,系统登录、用户管理、角色管理、用户权限、角色权限、访问情况、消息管理、组织机构、模块菜单、职员管理、选项管理、文档管理)。

 

   2:集成参考代码如下,去掉注视,代码不超过10行。

// --------------------------------------------------------------------
//  All Rights Reserved , Copyright (C) 2011 , Hairihan TECH, Ltd. 
// --------------------------------------------------------------------

using System;
using System.Windows.Forms;

namespace DotNet.Example
{
     using DotNet.Utilities;
     using DotNet.WinForm;

     ///   <summary>
    
///  FrmCallPermission.cs
    
///  权限接口演示
    
///         
    
///  修改记录
    
///  
    
///      2012.03.25 版本:1.0 JiRiGaLa  创建。
    
///         
    
///  版本:1.0
    
///
    
///   <author>
    
///          <name> JiRiGaLa </name>
    
///          <date> 2012.03.25 </date>
    
///   </author>  
    
///   </summary>  
     public  partial  class FrmCallPermission : Form
    {
         public FrmCallPermission()
        {
            InitializeComponent();
        }

         private  void SetControlState()
        {
             //  用户登录了系统,才可以用这些按钮。
             this.btnFrmUserAdmin.Enabled = BaseSystemInfo.UserIsLogOn;
             this.btnFrmRoleAdmin.Enabled = BaseSystemInfo.UserIsLogOn;
             this.btnFrmUserPermissionAdmin.Enabled = BaseSystemInfo.UserIsLogOn;
             this.btnFrmRolePermissionAdmin.Enabled = BaseSystemInfo.UserIsLogOn;
             this.btnFrmOrganizeAdmin.Enabled = BaseSystemInfo.UserIsLogOn;
             this.btnFrmModuleAdmin.Enabled = BaseSystemInfo.UserIsLogOn;
             this.btnFrmPermissionItemAdmin.Enabled = BaseSystemInfo.UserIsLogOn;
             this.btnFrmStaffAdmin.Enabled = BaseSystemInfo.UserIsLogOn;
             this.btnFrmLogGeneral.Enabled = BaseSystemInfo.UserIsLogOn;
             this.btnFrmItemsAdmin.Enabled = BaseSystemInfo.UserIsLogOn;
             this.btnFrmFileAdmin.Enabled = BaseSystemInfo.UserIsLogOn;
             this.btnFrmMessage.Enabled = BaseSystemInfo.UserIsLogOn;
        }

         private  void button_Click( object sender, EventArgs e)
        {
             //  目标的命名空间
             string assemblyName =  " DotNet.WinForm ";
             //  目标窗体的名字,其实就是按钮的名字去掉前缀btn
             string formName = ((Button)sender).Name.Substring( 3);
             //  通过反射调用相应的窗体
            Type assemblyType = CacheManager.Instance.GetType(assemblyName, formName);
            Form form = (Form)Activator.CreateInstance(assemblyType);
            form.ShowDialog();
             //  若的已经登录了,需要把相关按钮设置为有效
             this.SetControlState();
        }
    }
}

 

转载于:https://my.oschina.net/iwenr/blog/227977

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/387593.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

在使用win 7 无线承载网络时,启动该服务时,有时会提示:组或资源的状态不是执行请求操作的正确状态。 网上有文章指出,解决这个问题的方法是在设备管理器中启动“Microsoft托管网络虚拟适配

在使用win 7 无线承载网络时&#xff0c;启动该服务时&#xff0c;有时会提示&#xff1a;组或资源的状态不是执行请求操作的正确状态。 网上有文章指出&#xff0c;解决这个问题的方法是在设备管理器中启动“Microsoft托管网络虚拟适配器”&#xff0c;见 http://jingyan.baid…

偏差-方差分解(转)

1、定义 这里所说的偏差-方差分解就是一种解释模型泛化性能的一种工具。它是对模型的期望泛化错误率进行拆解。 样本可能出现噪声&#xff0c;使得收集到的数据样本中的有的类别与实际真实类别不相符。对测试样本 x&#xff0c;另 yd 为 x 在数据集中的标记&#xff0c;y 为真实…

用过C#的朋友可能认为它是一种十分安全的语言,其实C#也可以做到经典的缓冲区溢出。 本文章将用一个实例来描述C#究竟是如何发生缓冲区溢出的! 首先建立一个C# Console工程,并开启工程的“允许

用过C#的朋友可能认为它是一种十分安全的语言&#xff0c;其实C#也可以做到经典的缓冲区溢出。 本文章将用一个实例来描述C#究竟是如何发生缓冲区溢出的&#xff01; 首先建立一个C# Console工程&#xff0c;并开启工程的“允许不安全代码”选项 键入代码&#xff1a; [csharp]…

COOKIE伪造登录网站后台

1.关于XSS&#xff08;跨站脚本攻击&#xff09;和CSRF&#xff08;跨站请求伪造&#xff09;的知识&#xff0c;xss表示Cross Site Scripting(跨站脚本攻击)&#xff0c;它与SQL注入攻击类似&#xff0c;SQL注入攻击中以SQL语句作为用户输入&#xff0c;从而达到查询/修改/删除…

如何利用445端口进行入侵渗透 445端口入侵原因详细解析。大家在进行入侵渗透个人电脑的时候,经常会碰到各种各样的端口,比如135,1433,445,3306等端口,现在小编就给大家讲解下445端口如

如何利用445端口进行入侵渗透 445端口入侵原因详细解析。大家在进行入侵渗透个人电脑的时候&#xff0c;经常会碰到各种各样的端口&#xff0c;比如135&#xff0c;1433&#xff0c;445&#xff0c;3306等端口&#xff0c;现在小编就给大家讲解下445端口如何入侵。 445端口入侵…

项目复盘

前言 最近一年半多一直在做一个CMS项目&#xff0c;做了快两年了也没有上线&#xff0c;而且开发还走了不少&#xff0c;其中有不少原因是因为开发中频繁改动需求导致开发人员失去耐心&#xff0c;但是其中还有一个重要的原因就是架构设计的不好&#xff0c;导致很多服务的边界…

fiddler,他和其他抓包软件有什么区别,如何使用fiddler进行抓包

前言&#xff1a;本文章是搭配《批量获取微信公众号》一文&#xff0c;介于群里朋友很热情&#xff0c;我就趁着上班测完bug 来撰写该文章&#xff0c;那么读完本文&#xff0c;你会学习到什么呢&#xff1f; 什么是fiddler&#xff0c;他和其他抓包软件有什么区别&#xff0c…

安装CentOS6.8并配置网络图文解说亲测全过程

安装环境&#xff1a; 本文是在win10系统安装上VMWare并配置Centos6.8虚拟机。 准备工作 1.安装VMWare虚拟机 1.1下载VMWare12资源链接&#xff1a;https://pan.baidu.com/s/1AhfMSDXLO-aA0eMqnuMWHg 提取码&#xff1a;iftd 1.2安装VMWare&#xff0c;在安装过程中需要输入密钥…

Paxos算法是莱斯利·兰伯特(Leslie Lamport)1990年提出的一种基于消息传递的一致性算法。

Paxos算法是莱斯利兰伯特(Leslie Lamport)1990年提出的一种基于消息传递的一致性算法。Paxos算法解决的问题是一个分布式系统如何就某个值&#xff08;决议&#xff09;达成一致。在工程实践意义上来说&#xff0c;就是可以通过Paxos实现多副本一致性&#xff0c;分布式锁&…

09、策略模式

2019独角兽企业重金招聘Python工程师标准>>> 策略模式与工厂模式最大的区别在于&#xff0c;策略模式注重的是对算法的维护&#xff0c;也可以理解为对算法的封装。而工厂模式&#xff0c;则只是负责创建类&#xff0c;在刚接触策略模式时候&#xff0c;往往与工厂模…

Java编写代理服务器(Burp拦截Demo)一

大家都知道大名鼎鼎的BurpSuite代理神器&#xff0c;对于抓取HTTP请求非常好用&#xff0c;偶然&#xff0c;一朋友问我Java应该如何去编写代理服务器&#xff08;因为他想做某些东西&#xff09;&#xff0c;有没有相关的API 去实现&#xff0c;我想说&#xff0c;差不多你能想…

Rabbit MQ windows下安装

Rabbit MQ 是建立在强大的Erlang OTP平台上&#xff0c;因此安装Rabbit MQ的前提是安装Erlang。通过下面两个连接可以下载安装最新的版本&#xff1a; 下载并安装 Eralng OTP For Windows otp_win64_18.3.exe&#xff08;erlang的环境&#xff09;运行安装 Rabbit MQ Serve…

C++笔记(3)——string.h相关的一些小知识

strlen() 用于得到字符数组中第一个\0前的字符的个数&#xff0c;格式如下&#xff1a; strlen(数组); 例子&#xff1a; #include <stdio.h> #include <string.h>int main(){char str[10];gets(str);int len strlen(str);printf("%d\n", len);return 0…

Java语言与sikuli配合

很早之前写过一篇介绍sikuli的文章。本文简单介绍如何在java中使用sikuli进自动化测试。 图形脚本语言sikuli sikuli IDE可以完成常见的单击、右击、移动到、拖动等鼠标操作&#xff0c;java引用sikuli-script.jar同样可以执行这些常见的鼠标操作&#xff0c;因此即可方便的编写…

angular6 iframe应用

问题一、 iframe如何自适应屏幕高度 解决思路&#xff1a;通过设置iframe外层父元素高度等于window高度&#xff0c;再相对于父元素定位iframe元素&#xff1b;案例如下&#xff1a; 第一步: 模板文件中使用iframe // demo.component.html <div style"position: relati…

jquery下载地址:https://code.jquery.com/jquery/ 影响范围: 版本低于1.7的jQuery过滤用户输入数据所使用的正则表达式存在缺陷,可能导致LOCA

jquery下载地址&#xff1a;https://code.jquery.com/jquery/ 影响范围&#xff1a; 版本低于1.7的jQuery过滤用户输入数据所使用的正则表达式存在缺陷&#xff0c;可能导致LOCATION.HASH跨站漏洞 已测试成功版本&#xff1a; jquery-1.6.min.js&#xff0c;jquery-1.6.1.min…

Myeclipse常用快捷键

2019独角兽企业重金招聘Python工程师标准>>> Ctrl1 快速修复 CtrlD: 删除当前行 CtrlQ 定位到最后编辑的地方 CtrlL 定位在某行 CtrlO 快速显示 OutLine CtrlT 快速显示当前类的继承结构 CtrlW 关闭当前Editer CtrlK 快速定位到下一个 CtrlE 快速显示当前Edi…

数字三角形

问题描述 &#xff08;图&#xff13;.&#xff11;&#xff0d;&#xff11;&#xff09;示出了一个数字三角形。 请编一个程序计算从顶至底的某处的一条路径&#xff0c;使该路径所经过的数字的总和最大。●每一步可沿左斜线向下或右斜线向下走&#xff1b;●1&#xff1c;三…

版本低于1.7的jQuery过滤用户输入数据所使用的正则表达式存在缺陷

jquery下载地址&#xff1a;https://code.jquery.com/jquery/ 影响范围&#xff1a; 版本低于1.7的jQuery过滤用户输入数据所使用的正则表达式存在缺陷&#xff0c;可能导致LOCATION.HASH跨站漏洞 已测试成功版本&#xff1a; jquery-1.6.min.js&#xff0c;jquery-1.6.1.min.…

RabbitMQ学习总结(6)——消息的路由分发机制详解

2019独角兽企业重金招聘Python工程师标准>>> 一、Routing(路由) (using the Java client)在前面的学习中&#xff0c;构建了一个简单的日志记录系统&#xff0c;能够广播所有的日志给多个接收者&#xff0c;在该部分学习中&#xff0c;将添加一个新的特点&#xff0…