AppBoxFuture(九): 组织结构与权限体系

??权限体系是用于约束用户访问或操作资源的权利,这里的“资源”可以指数据,也可以指特定的功能(如审核订单)。通常的权限体系设计是基于角色的访问控制方式,用户通过角色与权限进行关联。作者的实现方式稍微有些不同,通过组织结构树与权限进行关联,这样可以实现子级节点继承上级节点设置的权限。

一、数据结构

  • 组织单元(OrgUnit):根据上级标识自引用的表结构,另通过EntityRef引用组织或工作组或员工;
  • 权限模型(PermissionModel):框架内置的元数据,包含已赋予权限的组织单元集合。

二、权限设置

  • 开发时根据业务需要,通过IDE主菜单->New->Permission新建权限模型,另可通过New->Folder创建模型文件夹分门别类管理相关模型;
  • 运行时通过OrgUnits视图(暂简单实现,如下图所示)选择组织单元,然后在“权限设置”面板勾选相应的权限。

注意:请勿将Admin用户的Admin权限取消掉,未做判断会导致无权限。

三、权限验证

内部用户登录流程

  • 根据账号与密码查询员工并验证密码;
  • 查询员工映射的组织单元,形成组织单元路径(如:/公司/部门/员工);
  • 以组织单元路径新建并缓存会话信息。

注意:系统默认的Admin密码:760wb,Test密码:la581

服务内验证权限

??调用服务时,根据会话的组织单元路径与指定的权限比对,可判断当前用户是否具备特定的权限。

注意:目前未验证权限的服务所有人均可调用。

  • 服务方法Attribute方式
[InvokePermission(Permissions.Admin || Permissions.Developer)] //可组合
public async Task<EntityList<Entities.OrgUnit>> LoadTreeList()
{
    var q = new TableScan<Entities.OrgUnit>();
    return await q.ToTreeListAsync(t => t.Childs);
}
  • 服务方法内代码验证方式
public async Task SaveOrder(Entities.Order order)
{
    if (!Permissions.SaveOrder)
        throw new Exception("不具备操作权限");
    await EntityStore.SaveAsync(order);
}

四、本篇小结

??本篇主要介绍了框架集成的权限体系的实现方式,Github上的运行时已经更新可测试。如果您有问题或Bug报告,请留言或在Github提交Issue。

原文地址:https://www.cnblogs.com/BaiCai/p/11007400.html

时间: 2024-10-09 17:39:26

AppBoxFuture(九): 组织结构与权限体系的相关文章

sqlserver权限体系(上)

简介 权限两个字,一个权力,一个限制.在软件领域通俗的解释就是哪些人可以对哪些资源做哪些操作. 在SQL Server中,”哪些人”,“哪些资源”,”哪些操作”则分别对应SQL Server中的三个对象,分别为主体(Principals),安全对象(Securables)和权限(Permissions),而权力和限制则是 对应了SQL Server中的GRENT和DENY.对于主体,安全对象和权限的初步理解,见图1. 图1.简单理解主体,安全对象和权限的关系 对于图1中的造句来说,并没有主语,也

sqlserver权限体系(下)

简介 在上一篇文章中,我对主体的概念做了全面的阐述.本篇文章接着讲述主体所作用的安全对象以及所对应的权限. 理解安全对象(Securable) 安全对象,是SQL Server 数据库引擎授权系统控制对其进行访问的资源.通俗点说,就是在SQL Server权限体系下控制的对象,因为所有的对象(从服务器,到表,到视图触发器等)都在SQL Server的权限体系控制之下,所以在SQL Server中的任何对象都可以被称为安全对象. 和主体一样,安全对象之间也是有层级,对父层级上的安全对象应用的权限会

sql server drop talbe 自动删除关联的外键 ,权限体系

if object_id('Proc_DropTableWithFK') is not null begin drop proc dbo.Proc_DropTableWithFK end GO create proc Proc_DropTableWithFK @PK_tableName nvarchar(50) as begin declare test_cur cursor local for select o2.name as 'FK_name' , O3.name as 'Table_Na

权限体系构建 - 平台权限

一:介绍 对于大数据平台本身,其最重要的资产就是运行在上面的任务,平台要有对其任务进行权限控制的能力,包括但不限于: 1. 何人可以查看这个任务信息:2. 何人可以修改这个任务定义:3. 何人可以对这个任务进行操作,保存执行该任务,启用/禁用,删除,重跑等操作:4. 什么人有权限可以修改这个任务本身的权限定义.5. 不同的角色默认的权限是什么,不同的任务默认的权限又是什么. 这些都需要有一个统一的规则,即需要确定的答案. 二:权限设计 1.权限类别 同时做一定的简化,将查看设为“读”权限,将修改

Mysql 之权限体系

MySQL 的权限体系大致分为5个层级: 全局层级: 全局权限适用于一个给定服务器中的所有数据库.这些权限存储在mysql.user表中.GRANT ALL ON .和REVOKE ALL ON .只授予和撤销全局权限. 数据库层级: 数据库权限适用于一个给定数据库中的所有目标.这些权限存储在mysql.db表中.GRANT ALL ON db_name.和REVOKE ALL ON db_name.只授予和撤销数据库权限. 表层级: 表权限适用于一个给定表中的所有列.这些权限存储在mysql.

Data Lake Analytics账号和权限体系详细介绍

一.Data Lake Analytics介绍数据湖(Data Lake)是时下大数据行业热门的概念:https://en.wikipedia.org/wiki/Data_lake.基于数据湖做分析,可以不用做任何ETL.数据搬迁等前置过程,实现跨各种异构数据源进行大数据关联分析,从而极大的节省成本和提升用户体验. 阿里云数据湖分析产品Data Lake Analytics(简称DLA):https://www.aliyun.com/product/datalakeanalytics产品文档:h

L016-linux系统文件权限体系实战深入讲解小节

不知道今天能不能写完哈,能写完发出来就是这周发两次小结了,有进步哦,不过L015和L016两节课内容也确实不多,进入正题 上一课学到了chmod.chown.umask,相对于比较基础的命令,那么这节就要接触这两个命令了,虽然老师也说了,不常用! setuid和setgid 一.setuid 我们先来看看怎么查看一个文件是否有setuid的属性,然后再来总结他的功能把. [[email protected] ~]# ls -l `which passwd` -rwsr-xr-x. 1 root

(九)Android权限系统

一.WebView请求权限实例 1.WebView获取网页访问权限的xml布局文件和MainActivity中的程序如下 <WebView android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/wv"></WebView> webView= (WebView) findViewById(R.id.w

九、特殊权限set_uid、set_gid、stick_bit;软链接文件;硬链接文件

(一)特殊权限set_uid(针对文件) set_uid:该权限针对二进制可执行文件,使文件在执行阶段具有文件所有者的权限.比如,passwd这个命令就具有该权限.当普通用户执行passwd命令时,可以临时获得root权限,从而更改密码.通俗的来说,就是普通用户在编辑这个文件的时候才会获得root用户的改文件的权力. 设置这个命令的前提是这个文件需要是二进制文件,且须为可执行文件. 二进制文件:如ls命令,passwd命令这些命令的文件就是二进制文件. 更改密码的文件:/etc/shadow #