前言:本文适用于快速搭建权限系统的用户,尤其适用于希望有良好定义的权限模型建立;系统解决方案是在基于角色访问控制(RBAC)策略基础上的权限访问模型实现,主要完成了后台权限验证逻辑和前端权限数据验证的功能。

1. 权限访问模型

1). 权限访问控制基本概念

  • 角色:是用户集合,表示同一类型的用户集合,可以拥有相同的功能操作。如:“部门经理”,表示公司下各个部门经理的用户的集合,通常他们有一组相同的权限。
  • 用户:指登录系统进行操作的软件用户,由用户名或者登录名来进行标识,每个用户分配有操作列表。
  • 资源:指隶属于整个软件系统的各个元素集合的总称,常见类型有:系统,模块,菜单,窗体,按钮,字段和方法等。
  • 权限:角色或用户有无权利对某个资源项进行操作的专业术语。
  • 授权:对角色或用户进行授权操作,表示该角色或用户是否具备权限对某一个资源项的操作。
  • 许可类型:有允许和拒绝两种。“允许”表示具备权限,“拒绝”表示没有权限。

2). 权限运算模型

a) 权限所属的两种类型:继承和自有

  • 继承权限:来自于用户属于的角色,通常一个用户有可能属于多个角色,这样就可以继承了多个角色的权限,在管理员操作时,通过角色授权比较方便地实现了用户权限的批量授权。
  • 自有权限:来自用户直接授权的权限,不属于继承权限,一般由管理员对用户进行某一个资源的特别授权。

b) 权限许可的两种类型:允许和拒绝

  • 允许:权限许可取值为允许,表示该用户具备权限访问或操作某一项资源。
  • 拒绝:权限许可取值为拒绝,表示该用户不具备权限访问或操作某一项资源。

c) 权限计算

  • 自有权限 U 继承权限:用户默认取继承权限,当自有权限有值后,则直接优先取自有权限;
  • 拒绝权限 U 允许权限:如果用户对一个资源项同时有允许和拒绝权限存在,则拒绝权限大于允许权限;

举例说明:

在上述授权过程中,用户继承权限和拒绝权限要参与运算。对于资源数据“新增”项来说:它有来自自有权限的“允许”操作,同时又有来自继承权限的“拒绝”操作,则权限运算后,该用户对资源数据“新增”项来说具备“允许”的权限。

3). 授权的两种方式:角色授权和用户授权并存

角色授权:管理员通过角色完成资源项的权限授权,这是管理员优先采用的授权方式,是为了提前批量化的进行资源权限的授权操作;

用户授权:管理员通过用户完成资源项的权限授权,这是管理员为了对用户权限进行微调的操作,一般根据用户先查询权限列表,再根据权限操作(允许和拒绝)来对资源进行授权。

2. 数据库设计

1). 基本数据表

2). 存储过程实现逻辑

角色权限列表读取,用户权限列表读取,角色授权保存和用户授权保存操作都有对应的存储过程,其中授权操作时候,需要进行权限运算。

3. 前端界面操作说明

1) 角色授权

左侧为角色列表,当选定一条角色记录时,右侧的权限数据列表就会出现,然后就可以对资源列表数据进行授权操作,每一条角色记录进行授权后,需要进行保存操作。当要清空某个角色的权限记录时,把该角色的资源项的权限许可列表的复选框清空,然后再进行保存操作。

2) 用户授权

左侧为用户列表,当选定一条用户记录时,该用户的权限列表就会显示,然后进行权限许可授权,再进行保存操作就可以。用户权限授权需要注意的是:有来自角色的继承权限,也有用户自身的自有权限,在授权操作时候,需要理解权限运算模型。

3) 主界面显示

用户登录系统后,左侧导航菜单会根据用户拥有的资源列表数据进行菜单项展现,当操作具体页面的数据记录时,页面顶部的操作按钮会根据用户是否具备允许操作的权限来进行展现。其中如图所示:黄色按钮标识该用户不具备该功能操作。

4. 权限开发框架的优势

1). 基于SlickOne 快速开发框架,代码重用度较高;

2). 用户登录,权限校验的原创设计思想持续改进和优化;

参考早期博文: http://blog.csdn.net/besley/article/details/8516894

3). 良好定义的权限模型,顺利解决了用户权限继承和自有两种方式的计算;

4). 前端界面权限控制功能的编程框架实现,较为轻松地实现了数据和功能分离的原则,便于开发人员二次开发和功能完善;

5). 多数据库的支持,默认SQLSERVER,支持Oracle, MySQL, KingBase(人大金仓) 等数据库;

6). 专业架构设计人员产品维护,始终保持良好架构设计和代码重构。

5. 商业授权和技术支持

SlickSafe 开源权限开发框架受软件著作权保护,我们提供商业授权服务,产品在线培训和技术支持服务,欢迎企业用户咨询了解。

联系方式:

QQ: 47743901(过河卒子)

EMail: sales@ruochisoft.com

6. 交流和建议

开源权限开发框架可以使得用户快速搭建用于企业软件的权限模型,而且在编程代码实践环节,保持不断完善和改进,希望有需求的用户或者开发人员持续推动项目。

开源项目地址:

http://github.com/besley/slicksafe

QQ交流群:

331928998

DEMO演示:

http://demo.slickflow.com/ssweb/

用户密码: admin/123456, jack/123456

SlickSafe.NET 开源权限框架开发指南的更多相关文章

  1. ASP.NET Aries 开源开发框架:开发指南(一)

    前言: 上周开源了Aries开发框架后,好多朋友都Download了源码,在运行过程里,有一些共性的问题会问到. 所以本篇打算写一下简单的开发指南,照顾一下不是太看的懂源码的同学,同时也会讲解一下框架 ...

  2. Apache Shiro 开源权限框架

    在 Web 项目中应用 Apache Shiro 开源权限框架 Apache Shiro 是功能强大并且容易集成的开源权限框架,它能够完成认证.授权.加密.会话管理等功能.认证和授权为权限控制的核心, ...

  3. Jdon框架开发指南

    Jdon框架快速开发指南 开发主要步骤如下: JdonFramework6.0以上两步开发见这里. 快速配置指南 新增/查询/修改/删除(CRUD); 批量查询和分页显示 本文Step By Step ...

  4. 开源项目SMSS开发指南(二)——基于libevent的线程池

    libevent是一套轻量级的网络库,基于事件驱动开发.能够实现多线程的多路复用和注册事件响应.本文将介绍libevent的基本功能以及如何利用libevent开发一个线程池. 一. 使用指南 监听服 ...

  5. 开源项目SMSS开发指南

    SMSS是一个由我个人发起的开源项目,目的是建立一套轻量化,高可用,高安全和方便扩展的业务支撑框架.SMSS面向TCP/IP层开发,适合扩展上层业务接口.数据结构传输序列化通过Protobuf实现.传 ...

  6. Koa框架教程,Koa框架开发指南,Koa框架中文使用手册,Koa框架中文文档

    我的博客:CODE大全:www.codedq.net:业余草:www.xttblog.com:爱分享:www.ndislwf.com或ifxvn.com. Koa -- 基于 Node.js 平台的下 ...

  7. Phaser是一款专门用于桌面及移动HTML5 2D游戏开发的开源免费框架

    Phaser是一款专门用于桌面及移动HTML5 2D游戏开发的开源免费框架,提供JavaScript和TypeScript双重支持,内置游戏对象的物理属性,采用Pixi.js引擎以加快Canvas和W ...

  8. 基于第三方开源库的OPC服务器开发指南(3)——OPC客户端

    本篇将讲解如何编写一个OPC客户端程序测试我们在前文<基于第三方开源库的OPC服务器开发指南(2)——LightOPC的编译及部署>一篇建立的服务器.本指南的目的是熟悉OPC服务器的开发流 ...

  9. 分享一实战性开源MVC框架<Linux、Windows跨平台开发so easy>

    一.引子   开源地址 https://github.com/564064202/Moon.Mvc 欢迎加入开发 .NET Core微软还在发力,但作为商用还有一段距离,很多开发库尚不能用于.NET ...

随机推荐

  1. docker centos:latest 使用 sshd

    一.术语 1.容器 很多用户在接触Docker 之初都会认为容器就是一种轻量级的虚拟机,但实际上,容器和虚拟机有非常大的区别.从根本形态上来看,容器其实就是运行在操作系统上的一个进程,只不过加入了对资 ...

  2. python基础--shutil模块

    shutil模块提供了大量的文件的高级操作. 特别针对文件拷贝和删除,主要功能为目录和文件操作以及压缩操作.对单个文件的操作也可参见os模块. 注意 即便是更高级别的文件复制函数(shutil.cop ...

  3. Java Http接口加签、验签操作方法

    1.业务背景 最近接触了一些电商业务,发现在处理电商业务接口时,比如淘宝.支付类接口,接口双方为了确保数据参数在传输过程中未经过篡改,都需要对接口数据进行加签,然后在接口服务器端对接口参数进行验签,确 ...

  4. 《精通Python设计模式》学习之抽象工厂

    这种工厂模式用得少, 可能在游戏类的编程中用得比较多吧. 这个思路清晰一定要OK的. class Frog: def __init__(self, name): self.name = name de ...

  5. drools7 (二、agenda-group 的使用)

    几个关键点: 1. 如果没有指定agenda-group 则默认把所有未指定agenda-group的 rules 都执行一遍 2. 如果指定了agenda-group 使用的时候必须指定该name才 ...

  6. Asp.Net MVC路由调试工具-RouteDebugger

    1.获取方式 第一种方法: 在程序包控制台中执行命令 PM> Install-Package routedebugger 安装成功后Web.config文件中会自动加入行 <add key ...

  7. USACO 5.5 Picture

    PictureIOI 1998 A number, N (1 <= N < 5000), of rectangular posters, photographs and other pic ...

  8. 二、 sql*plus常用命令

    一.sys用户和system用户Oracle安装会自动的生成sys用户和system用户(1).sys用户是超级用户,具有最高权限,具有sysdba角色,有create database的权限,该用户 ...

  9. wampserver的安装和使用

    首先想说一下通常搭建WAMP平台的时候主要分为散装包搭建和集成包搭建过程. 散装包搭建就是把PHP,Apache,MySQL等下载下来,一个个的安装,其过程灰常的复杂,而且需要配置的系统变量和修改的文 ...

  10. JS图片滚动代码(无缝、平滑)

    非常平滑的JS图片滚动特效代码,无缝循环,速度可自定义,鼠标悬停时停止.它的特点是JS和图片地址分离,这样做你就经易的从数据库动态调用每张图片的地址,方便控制,因此它非常的应用. <!DOCTY ...