前言:本文适用于快速搭建权限系统的用户,尤其适用于希望有良好定义的权限模型建立;系统解决方案是在基于角色访问控制(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. 大数据系列之数据仓库Hive中分区Partition如何使用

    Hive系列博文,持续更新~~~ 大数据系列之数据仓库Hive原理 大数据系列之数据仓库Hive安装 大数据系列之数据仓库Hive中分区Partition如何使用 大数据系列之数据仓库Hive命令使用 ...

  2. mac上安装完成node,就升级好了npm,之后的设置

    1.打开终端输入: npm config list 找到npmrc globalconfig /usr/local/etc/npmrc 2.打开npmrc sudo vim /usr/local/et ...

  3. linux文件处理

    取中间的行数作为train.txt sed -n '1000000,170910580p' train.txt > trainv1.txt 取前面的行数作为dev.txt head -10000 ...

  4. Effective STL 笔记 -- Item 6 ~ 7: Container and Object Pointer

    Effective STL 笔记 – Item 6 ~ 7: Container and Object Pointer 中间两次笔记被删掉了,简单补一下: Item 3 中提到如果将对象直接放入容器中 ...

  5. CCF CSP 201409-2 画图

    CCF计算机职业资格认证考试题解系列文章为meelo原创,请务必以链接形式注明本文地址 CCF CSP 201409-2 画图 问题描述 在一个定义了直角坐标系的纸上,画一个(x1,y1)到(x2,y ...

  6. USACO 5.4 Canada Tour

    Canada Tour You have won a contest sponsored by an airline. The prize is a ticket to travel around C ...

  7. 二、 sql*plus常用命令

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

  8. python和redis简单交互

    python和redis简单交互 1.安装redis模块 pip3 install redis 2.redis模块简单使用: # /usr/bin/env python3 import redis c ...

  9. ffmpeg 添加filter步骤

    a). 自己写一个XXX.c文件,比如vf_transform.c,放在libavfilter目录下.代码可以参考其他filter: b) 在libavfilter/allfilters.c添加一行: ...

  10. linux虚拟机更改时区

    第一种方法: cat  /etc/sysconfig/clock ZONE="Asia/Shanghai" UTC=true ARC=false rm   -f /etc/loca ...