经典权限解决方案

1.权限简介 
一般的管理系统都需要对用户的操作进行一定的限制,有的用户可以有许多操作,有的则有少量的操作.这样就需要一个授权机制,基于角色的授权机制描述了某个角色拥有一定数量的操作授权,属于该角色的用户则也就拥有了该角色的权限,且若用户属于多个角色则其拥有多个角色权限的集合. 
我们的权限精确到按钮级别,如共享文档管理,管理可以查询、上传文档、下载文档、删除文档等操作,而一般的用户只需要查询和下载文档就可以了, 
这时候我们的权限管理就发挥了作用, 下面让我们一步步开始实现! 
我们使用ASP.NET结合jQuery、EasyUI实现一个精典的权限管理机制

2.数据模型设计 
数据模型包括:员工表,角色表,员工与角色关系表和角色权限表 
员工表: 员工登录到系统,如下图 

角色表:授权权限的集合对象,如下图 

角色表与员工关系表:如下图 

角色权限表:如下图 

3.Action定义 
用户对应某功能的操作(如:增\删\改\查)需要一一建立相应操作行为实例(Action),这里以”文档管理”为例: 变量代表文档管理中的单个操作,例如 Directory_add = “j”;代表添加文档操作,其他各操作定义如下:

        public static string Directory_browse = "i";//文档浏览操作
public static string Directory_add = "j";//文档浏览添加
public static string Directory_update = "k";//文档浏览修改
public static string Directory_delete = "l";//文档浏览删除

定义文档操作Action: 每个Action有标题(text)、图标(iconCls)、处理函数(handler),如下:

    /// <summary>
/// 文档操作Action
/// </summary>
public class DocActions
{
public static ToolbarItem Query = new ToolbarItem()
{
text = "查询",
iconCls = "icon-search",
handler = "oa.os.doc.onBtnQueryDocClick"
};
public static ToolbarItem Refresh = new ToolbarItem()
{
text = "刷新",
iconCls = "icon-reload",
handler = "oa.os.doc.onBtnRefreshDocClick"
};
public static ToolbarItem Upload = new ToolbarItem()
{
text = "上传文档",
iconCls = "icon-add",
handler = "oa.os.doc.onBtnUploadDocClick"
};
public static ToolbarItem Update = new ToolbarItem()
{
text = "编辑",
iconCls = "icon-application_edit",
handler = "oa.os.doc.onBtnEditDocClick"
};
public static ToolbarItem Delete = new ToolbarItem()
{
text = "删除",
iconCls = "icon-delete",
handler = "oa.os.doc.onBtnDelDocClick"
};
}

4.给角色授权, 结合EasyUI数据表格组件,效果如下图 

勾选复选框就表示为该角色授权其他的操作

权限目录树的初始化,如下(在AppPermission.cs类)

        /// <summary>
/// 初始化权限目录树
/// </summary>
/// <returns></returns>
private static PermTreeNode[] CreatePermission()
{
PermTreeNode[] nodes = new PermTreeNode[]{
new PermTreeNode() {
Name = "系统权限",Id="",
children = new PermTreeNode[]{
new PermTreeNode()
{
Name = "个人办公",
children=new PermTreeNode[]{
new PermTreeNode()
{
Name = "个人考勤",
Action1 = new PermAction() { Name = "个人考勤管理", Action = AppAction.PunchInOut }
},
new PermTreeNode()
{
Name = "工作日志",
Action1 = new PermAction() { Name = "工作日志管理", Action = AppAction.WorkLog }
}
}
},
new PermTreeNode()
{
Name = "人事管理",
children=new PermTreeNode[]{
new PermTreeNode()
{
Name = "部门管理",
Action1 = new PermAction() { Name = "添加", Action = AppAction.Department_add },
Action2 = new PermAction() { Name = "编辑", Action = AppAction.Department_update },
Action3 = new PermAction() { Name = "删除", Action = AppAction.Department_

ASP.NET经典权限解决方案,适用于OA、CRM、ERP、HR等应用系统的更多相关文章

  1. 分享一个全开源的ASP.NET快速开发平台,能快速开发OA CRM ERP 等系统

    bingo炸了 2017/3/30 16:28:14 阅读(870) 评论(0) 公司业务量比较大,接了很多项目,为了缩短开发周期老板让我牵头搭建了一个快速开发平台. 我们主要的业务是做OA.CRM. ...

  2. JeePlus 工作流版本 sping mvc oa crm erp java html5 源码

    https://shop108220642.taobao.com/search.htm?spm=2013.1.w5002-5297459241.1.mnhAZ5&search=y http:/ ...

  3. ASP.NET通用权限系统快速开发框架

    系统在线演示地址: http://120.90.2.126:8051 登录账户:system,密码:system### DEMO下载地址: http://download.csdn.net/detai ...

  4. ASP.NET 经典60道面试题

    转:http://bbs.chinaunix.net/thread-4065577-1-1.html ASP.NET 经典60道面试题 1. 简述 private. protected. public ...

  5. 一秒钟看懂SaaS、CRM、OA、ERP、HR、进销存

    自2014年以来,SaaS.CRM.OA.ERP.HR.APM.进销存.财务系统等,这些名词大量出现在微信朋友圈.电视楼宇广告和千百万融资资讯中.它们到底是什么意思?相互之间又有什么区别?在这个飞速发 ...

  6. Silverlight管理系统源码(用于开发ERP、OA、CRM、HR、进销存、财务等系统之用)

    Silverlight大型管理系统源代码(支持创建ERP.OA.CRM.HR.进销存.财务等系统之用) 可用于开发以下系统 SilverlightERP SilverlightCRM Silverli ...

  7. ASP.NET通用权限组件思路设计

    开篇 做任何系统都离不开和绕不过权限的控制,尤其是B/S系统工作原理的特殊性使得权限控制起来更为繁琐,所以就在想是否可以利用IIS的工作原理,在IIS处理客户端请求的某个入口或出口通过判断URL来达到 ...

  8. 开篇ASP.NET MVC 权限管理系列

    开篇 [快乐编程系列之ASP.NET MVC 权限管理系列]一.开篇   用了好长一段时间的ASP.NET MVC,感觉MVC真的是很好用,最近一年左右做了两个中小型项目,觉得还是很多地方不是很熟悉的 ...

  9. Android开发——Android M(6.0) 权限解决方案

    Android开发--Android M(6.0) 权限解决方案 自从Android M(6.0)发布以来,权限管理相比以前有了很大的改变,很多程序员发现之前运行的好好的Android应用在Andro ...

随机推荐

  1. 『NiFi 学习之路』把握 —— 架构及主要部件

    一.概述 通过前面几篇文章的学习,相信你对 NiFi 有了一个基础性的了解. 数据处理和分发系统 是什么概念? NiFi 系统中数据的传递方式是怎样的? NiFi 的重要 Processor 有哪些? ...

  2. Codeforces Round #431 (Div. 2) C. From Y to Y

    题目: C. From Y to Y time limit per test 1 second memory limit per test 256 megabytes input standard i ...

  3. hihocoder1478 水陆距离

    地址:http://hihocoder.com/problemset/problem/1478 题目: 水陆距离 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 给定一个 ...

  4. 在安装好MySql后忘记root的密码,或者给root添加密码

    一.编辑MySql的配置文件:my.ini(在MySql安装目录下). 打开配置文件,在文件最后一行添加:skip-grant-tables,然后保存退出. 意思为就是在启mysql时不启动grant ...

  5. 【Head First Servlets and JSP】笔记 28: 过滤器与包装器

    1.过滤器的执行顺序: <url-pattern> 为第一梯队, <servlet-name> 为第二梯队,梯队内的执行顺序和 DD 里的声明顺序相同. When the co ...

  6. 负载均衡技术在CDN中发挥着重要作用

    转载地址:http://www.qicaispace.com/gonggao/server/page01/info07.asp CDN是一个经策略性部署的整体系统,能够帮助用户解决分布式存储.负载均衡 ...

  7. Python3.x:正则 re.findall()的用法

    Python3.x:正则 re.findall()的用法 概念: 语法:findall(pattern, string, flags=0) 说明:返回string中所有与pattern相匹配的全部字串 ...

  8. 20145310《Java程序设计》第5次实验报告

    20145310<Java程序设计>第5次实验报告 实验要求 掌握Socket程序的编写: 掌握密码技术的使用: 设计安全传输系统. 实验内容 根据所学内容,编写代码实现服务器与客户端 掌 ...

  9. 20145329 《Java程序设计》第三周学习总结

    教材学习内容总结 java并非完整的面向对象程序语言 定义 1:class:定义类 2.char:类型声明变量 3.new:新建对象 4.名称 X:参考 5.=:可用于指定参考至新建变量 6.构造函数 ...

  10. COGS314. [NOI2004] 郁闷的出纳员

    ★★★   输入文件:cashier.in   输出文件:cashier.out   简单对比 时间限制:1 s   内存限制:128 MB [问题描述] OIER公司是一家大型专业化软件公司,有着数 ...