通用权限管理系统组件 (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,一经查实,立即删除!

相关文章

数学符号及读法大全

数学符号及读法大全 常用数学输入符号&#xff1a; ≈ ≡ ≠ &#xff1d; ≤≥ &#xff1c; &#xff1e; ≮ ≯ ∷ &#xff0b; &#xff0d; &#xff0f; ∫ ∮ ∝ ∞ ∧ ∨ ∑ ∏ ∪ ∩ ∈ ∵ ∴ ⊥ ‖ ∠ ⌒ ≌ ∽ √ &#xff08;&#xff09; 【】&#xff5b…

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

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

阿里一年,聊聊我成长了什么,入职阿里的职业生涯感悟

2018.5.31~2019.5.31&#xff0c;一段精彩的旅程&#xff0c;渡过了在阿里一年的时光&#xff0c;这段时光有快乐、有焦虑、有迷茫、更有思考&#xff0c;思考的是自己过去的种种不足、思考的是一些现在看来之前错误的想法、思考的是如何成为一个更好的技术人&#xff0c;将这一…

偏差-方差分解(转)

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;从而达到查询/修改/删除…

Spring Cloud 学习 (五) Zuul

Zuul 作为路由网关组件&#xff0c;在微服务架构中有着非常重要的作用&#xff0c;主要体现在以下 6 个方面&#xff1a; Zuul, Ribbon 以及 Eureka 相结合&#xff0c;可以实现智能路由和负载均衡的功能&#xff0c;Zuul 能够将请求流量按某种策略分发到集群状态的多个服务实例…

如何利用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;导致很多服务的边界…

父、子页面之间页面元素的获取,方法的调用

一、在iframe页面上调取父级页面元素 1.在父页面上获取iframe页面元素(在父页面修改子页面div的背景色为红色) js代码如下&#xff1a; 1 <script type"text/javascript"> 2 window.onload function(){ 3 var iframe document.getElementById(iframeId)…

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

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

Vue导入非模块化的第三方插件功能无效解决方案

一、问题&#xff1a; 最近在写vue项目时&#xff0c;想引入某些非模块化的第三方插件时&#xff0c;总是发现会有报错。且在与本地运行插件测试对比时发现插件根本没有注入到jQuery中&#xff08;console.log($.fn)查看当前jq有哪些方法&#xff09;&#xff0c;例如&#xff…

ES6笔记 -- 字符串拓展

字符串拓展 Unicode 相关 JS 允许使用/uxxxx的Unicode方式显示字符, 但是只限于码点在/u0000~/uFFFF之间, 超过该范围的码点必须用双字节形式表示ES6 中, 将码点放入大括号内, 就可以解读JS 不能处理4个字节的字符, 字符串长度会被误判为2ES6 提供了codePointAt方法, 能够正确处…

android 转发短信

通过这些代码也可以对远程手机实现短信控制。有兴趣的可以自己改一下&#xff0c;说一下简单的原理&#xff0c;要实现控制的话&#xff0c;必须得走一个固定的号码&#xff0c;固定的格式&#xff0c;然后通过得到此号码的内容&#xff0c;然后通过固定的内容&#xff0c;就可…

[Noi2016]区间

传送门 Code /* 线段树 尺取法 */ #include<bits/stdc.h> #define ll long long #define max(a,b) ((a)>(b)?(a):(b)) #define min(a,b) ((a)>(b)?(b):(a)) #define reg register inline int read() {int x0,f1;char chgetchar();while(ch<0||ch>9){if(…

安装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;往往与工厂模…

Linux创建、删除文件和文件夹命令

https://www.cnblogs.com/c-x-m/p/9794082.html转载于:https://www.cnblogs.com/sun-ldy/p/10279025.html

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

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