基于资源的权限系统-API设计
概述
权限系统需要和别的系统集成,因此,良好的API是易用性的保证。
这里只设计一些权限相关的核心 API,关于用户,组织,导入导出之类的后续再逐步补充
API 设计
围绕权限有以下 4 类 API:
授权
单独授权 给某个 用户/组织 授予权限,权限 = 资源+动作
UpdatePermission(userID, resourceID, action) error // 授权后 userID 可以在 resouceID 上进行 action
UpdatePermission(orgID, resouceID, action) error // 授权后 orgID 可以在 resouceID 上进行 action
批量授权 给多个 用户/组织 授予权限。
UpdatePermissions(userIDList, resourceIDList, actionList) error
UpdatePermissions(orgIDList, resouceIDList, actionList) error
检查权限
检查某个用户/组织 是否有权限
CheckPermission(userID, resourceID, action) bool // 检查 userID 是否可以在 resouceID 上进行 action
CheckPermission(orgID, resouceID, action) bool // 检查 orgID 是否可以在 resouceID 上进行 action
查询权限
查询某个用户/组织的权限数据,其中 Permission 是权限数据的结构
GetPermissions(userID) ([]Permission, error) // 获取 userID 的所有权限数据
GetPermissions(orgID) ([]Permission, error) // 获取 orgID 的所有权限数据
删除权限
删除某个用户/组织的权限数据
DeletePermission(userID, resourceID, action) // 取消 userID 在 resouceID 上进行 action 的权限
DeletePermission(orgID, resouceID, action) // 取消 orgID 在 resouceID 上进行 action 的权限
总结
整个权限系统只有以上几个API肯定是不够的,其他的API都是常规的 用户/组织,资源,动作等的CURD,这里就不一一列出了。
基于资源的权限系统-API设计的更多相关文章
- 权限管理系统(五):RBAC新解,基于资源的权限管理
本文讨论以角色概念进行的权限管理策略及主要以基于角色的机制进行权限管理是远远不够的.同时我将讨论一种我认为更好的权限管理方式. 1.什么是角色 当说到程序的权限管理时,人们往往想到角色这一概念.角色是 ...
- 基于Web在线考试系统的设计与实现
这是一个课程设计的文档,源码及文档数据库我都修改过了,貌似这里复制过来的时候图片不能贴出,下载地址:http://download.csdn.net/detail/sdksdk0/9361973 ...
- 简洁经常使用权限系统的设计与实现(一):构造权限菜单树的N(N>=4)种方法
权限系统.Web开发常见标准子系统之中的一个.结合自己的一些思考和实践,从本篇開始权限系统的设计与实现之路. 近期,重构了项目的权限菜单构造过程,向前端返回json格式的权限树. 这一篇.仅仅是大致介 ...
- 简洁常用权限系统的设计与实现(一):构造权限菜单树的N(N>=4)种方法
权限系统,Web开发常见标准子系统之一.结合自己的一些思考和实践,从本篇开始权限系统的设计与实现之路. 最近,重构了项目的权限菜单构造过程,向前端返回json格式的权限树. 这一篇,只是大致介绍下这个 ...
- python 全栈开发,Day107(CRM初始,权限组件之权限控制,权限系统表设计)
一.CRM初始 CRM,客户关系管理系统(Customer Relationship Management).企业用CRM技术来管理与客户之间的关系,以求提升企业成功的管理方式,其目的是协助企业管理销 ...
- Asp.net core IdentityServer4与传统基于角色的权限系统的集成
写在前面 因为最近在忙别的,好久没水文了 今天来水一篇: 在学习或者做权限系统技术选型的过程中,经常有朋友有这样的疑问 : "IdentityServer4的能不能做到与传统基于角色的权限系 ...
- C 实现基于角色的权限系统
本文demo下载地址:http://www.wisdomdd.cn/Wisdom/resource/articleDetail.htm?resourceId=1068 实例使用C# 实现基于角色的权限 ...
- 基于web公交查询系统----数据库设计
要求:公交查询系统,管理员可以新增线路,修改车辆参数,发车时间表,删除车次,站名等. 用户可以按线路查询,按站点查询相关信息,也可查询两站点之间的换乘信息等. 数据库应包含管理员表,车站表,线路表,车 ...
- 简洁常用权限系统的设计与实现(四):不维护level,用递归方式构造树
第三篇中,我们通过维护节点的深度level,通过迭代所有的节点,只需要一次,就构造了树. 本篇,换一种方式. 好处是:不维护节点的深度level,增加和修改节点时,也不用维护.递归实现,代码比较清晰 ...
随机推荐
- HTML5.dcloud.io-stream-app
dcloud.io提出的Stream App 本文仅仅是关于dcloud.io提出的SteamApp初探,所有内容请参考其官网. 1. Application promotion by scaning ...
- delphi真随机数发生器
当然不是绝对真随机,是相对真随机数 下载
- C++拷贝构造函数
拷贝构造函数是一种特殊的构造函数,其定义为第一个参数为为本类型的一个引用或者是常引用,且无其它参数或者其它参数为默认值,例如下面的函数: X::X(const X&); X::X(X& ...
- PHP测试用例文档
PHP接口测试用例和文档 PHP在过程中的测试 采用写一个简单html表单做一个简单的post测试 PHP接口测试文档 Alpha部分主要的接口文档可查看 接口文档 功能模块 接口 登录注册模块 验证 ...
- Springmvc mybatis
http://www.icoolxue.com/album/show/216 07
- 实战录 | 一起唠唠那些常见的DDoS攻击
<实战录>导语 云端卫士<实战录>栏目定期会向粉丝朋友们分享一些在开发运维中的经验和技巧,希望对于关注我们的朋友有所裨益.本期分享人为云端卫士系统架构师高鹏,将带来常见的DDo ...
- myeclipse项目编码方式彻底设置
我们团队6月10号开始做龙泉瓯江青瓷有限公司的ERP系统,采用java语言开发,在开发时我们采用的是java的流行框架struts2,前端脚本都用jquery框架,开发IDE用的是myeclipse, ...
- 关于String中+与StringBuilder的问题
字符串连接可以通过两种方法实现,其中一种是在Java中提供的一个StringBuilder类(这个类只在J2SE5及以上版本提供,以前的版本使用StringBuffer类). 字符串是Java程序 ...
- 数据存储--沙盒sandBox
默认情况下,每个沙盒必含有3个文件夹:Documents, Library 和 tmp 一.沙盒(sandbox)出于安全的目的,应用程序只能将自己的数据和偏好设置写入到几个特定的位置上.当应用程序被 ...
- map阶段动态获取CombineTextInputFormat各输入文件路径
老mr程序中map中conf的map.input.file参数只能获取获取CombineTextInputFormat的第一个输入文件,而新版mr程序则连第一个输入文件也无法获取,这是因为create ...