role roleMapping 权限说明
根据我的理解,希望能帮助到大家
role表 是权限列表。
roleMapping
关联权限(例如那个用户在那个权限里面,或者权限里面包含那个权限)
roleMapping的数据不能单独添加。必须在role表中的principals里面双击关联,
例如
1、在role表中添加一个name=管理员,点击principals进入roleMapping子表,principalType=USER,principalId=[会员id]
2、在role表中添加一个name=普通会员,点击principals进入roleMapping子表,principalType=USER,principalId=[会员id],
再点击普通会员的principals进入roleMapping子表,principalType=ROLE,principalId=[role表中管理员的id]
这样就建立了一个管理员和普通会员
首先解释几点:
权限总共是有四种:(就是设置表权限的右边那个)
第一种是所有用户都可以的everyone(所有用户都拥有该权限 )
第二种是只有用户自己才能有权限的owner(仅登录用户拥有该权限)
第三种是角色限制,可以嵌套角色,需要设置role表中的name而非id
第四种是用户限制,这个就没有可说的了。
owner设置中需要注意的一些地方,判断是否为owner的方法是,用户登录完后会在accessToken里边增加一条信息,里边有登录用户的userId。然后每次携带token进行访问的时候如果是owner权限的设置,就比对当前数据与id或者userId是否相同(user表的时候对比id,其他表对比的是userId),所以如果要使用owner权限需要新加一列userId字段(注意大小写,而且是string类型,不是pointer类型)。
注意:owner权限只能用在get、update、delete上。如果用在find下面,根本无法查询到表。所以不行。
例如_user 表,就是owner权限,可以参考看下。
二三四的关系是或的关系,这样就增加了权限设置的灵活性,例如信息只能自己或者自己的上级领导可以修改,就可以设置owner+role或user限制
补充说明,几个基本概念
1. 权限是用户访问资源的能力。在apicloud的设计中,class是资源,user是用户(身份)。
每个class的权限就是指一个那些user,可以访问这个资源。
2. 资源的访问分为多种操作,每个操作都有独立的权限控制,即Get/Post/Detele/Update分别指定那些用户。
3.指定用户的方式有三个大类,一是public, 即所有人;二是protected特定的人,登录用户owner或指定用户id,三是protected不特定的一组人,即按身份来划分。
4.owner类别有一点特别,每个指定这个权限的资源需要一个userId字段,这个字段指明了谁是owner.
对于User Class,这个字段就是id。
最复杂,灵活的是按身份划分的问题。
role class就是身份,roleMapping是一个属于关联,分成user和role两类。
user类的roleMapping很好理解,指一些user属于这个身份,即这些用户有身份相应的权限。例如,id=3xxxxxx的用户,属于role普通用户,那么role
class中普通用户这一行,principals字段对应的子表中,就会有一行principal_id=3xxxxxx的记录。这是一个多对多的关系
role类的roleMapping实际上应该是一个树(或者森林),例如经理role具备所有员工role的权限,反之不然。所以经理role对应的rolemapping表中,应
有一行principal_id=[员工role的id]。这应该是一个一对多的关系(高级权限role对应多个低权限的role)
注意这两类roleMapping的记录可以同时出现,也应该同时出现。
以我的设计经验来看,应该先考虑定义资源,确定其归属(是否适用于owner权限),或者属于一个身份。
身份系统要简单,够用即可,将来可以一个身份分解成多个,用于细分权限,但很难进行身份合并。
身份的设计最好映射现实的情况,从大向小的设计,如员工,HR部门员工,HR部门XX组员工。尽量不要树形,而是增加特定身份
在员工身份之外设计,资源管理者身份,经理就是资源管理者+员工,当然为了方便也可以设计一个上层身份叫经理。
最后,记得把所有顶层身份都加入一个叫超级用户的身份中,这是为最后急救。
相关技术文档:http://www.apicloud.com/index?uzchannel=3
免费1对1梳理APP需求:http://app.apicloud.com/RequirementDescription
推荐项目送macbook、iphone7等大礼:http://community.apicloud.com/bbs/forum.php?mod=viewthread&tid=44433
role roleMapping 权限说明的更多相关文章
- 使用 fixed role 授予权限
今天下午,Leader 发mail给我,要求授予某个User对数据库只读的权限. Step1,在SQL Server中为该用户创建一个Login和User,在创建User时,建立Login 和 Use ...
- Forms身份验证和基于Role的权限验证
Forms身份验证和基于Role的权限验证 从Membership到SimpleMembership再到ASP.NET Identity,ASP.NET每一次更换身份验证的组件,都让我更失望.Memb ...
- ASP.NET:Forms身份验证和基于Role的权限验证
从Membership到SimpleMembership再到ASP.NET Identity,ASP.NET每一次更换身份验证的组件,都让我更失望.Membership的唯一作用就是你可以参考它的实现 ...
- Security10:授予访问Object的权限
1,将访问Object的权限授予Database Role 或 User 的语法如下 GRANT <permission> [ ,...n ] ON [ OBJECT :: ][ sche ...
- Security9:查询Login被授予的权限
在给一个Login授予权限时,发现该Login已经存在,其对应的User也存在于指定的DB中,查看该Login在指定DB中已被授予的权限. 1,查看Login的Server PrincipalID s ...
- SpringMVC+Shiro权限管理
什么是权限呢?举个简单的例子: 我有一个论坛,注册的用户分为normal用户,manager用户.对论坛的帖子的操作有这些:添加,删除,更新,查看,回复我们规定:normal用户只能:添加,查看,回复 ...
- SpringMVC下的Shiro权限框架的使用
SpringMVC+Shiro权限管理 博文目录 权限的简单描述 实例表结构及内容及POJO Shiro-pom.xml Shiro-web.xml Shiro-MyShiro-权限认证,登录认证层 ...
- 权限<九>
介绍 角色就是相关权限的命令集合,使用角色的主要目的就是为了简化权限的管理,假定有用户 a,b,c 为了让他们都拥有权限 1. 连接数据库 2. 在 scott.emp 表上 select,ins ...
- 实例:ABAP权限对象设计与权限检查的实现(详细)
学习总结,分享给大家,,,(有图有真像) 我在ECC里创建了一张表,随意插入了5条数据 创建权限对象,使分配这个权限的用户只能操作部门编号(edept)为 ‘10’ 的数据. 1. SU20,创建权限 ...
随机推荐
- Hadoop执行作业时报错:java.lang.OutOfMemoryError: Java heap space
常常被一些用户问到,说“为什么我的mapreduce作业总是运行到某个阶段就报出如下错误,然后失败呢?以前同一个作业没出现过的呀?” 10/01/10 12:48:01 INFO mapred.Job ...
- 【BZOJ】1975: [Sdoi2010]魔法猪学院
题意 \(n(2 \le n \le 5000)\)个点,找尽量多的不同\(1\)到\(n\)的路径,每一次的花费就是路径的全值和,要求在费用不超过\(E\)的情况下路径最多. 分析 裸的最段路. 题 ...
- 蒟蒻修养之cf橙名计划2
29 由于第一篇没写题意导致大部分神题题解已经完全不知道在说啥了...所以还是重开一篇保平安... [303A]题意:求三个长度为$n(n<=10^5)$的排列$a,b,c$使得$a_i+b_i ...
- 20145330《Java学习笔记》第一章课后练习8知识总结以及IDEA初次尝试
20145330<Java学习笔记>第一章课后练习8知识总结以及IDEA初次尝试 题目: 如果C:\workspace\Hello\src中有Main.java如下: package cc ...
- PostgreSQL新手入门
自从MySQL被Oracle收购以后,PostgreSQL逐渐成为开源关系型数据库的首选. 本文介绍PostgreSQL的安装和基本用法,供初次使用者上手.以下内容基于Debian操作系统,其他操作系 ...
- Number Sequence
Number Sequence A number sequence is defined as follows: f(1) = 1, f(2) = 1, f(n) = (A * f(n - 1) ...
- Spark cache 和 persist
1)RDD的cache()方法其实调用的就是persist方法,缓存策略均为MEMORY_ONLY:2)可以通过persist方法手工设定StorageLevel来满足工程需要的存储级别:3)cach ...
- shodan:黑客搜索引擎
Shodan是msfconsole创始人与几个爱好技术的黑客开发的一款黑客搜索引擎,被称为可怕的搜索引擎,详细介绍见百度百科 网站地址:www.shodan.io 免费注册一账号,无账号的话,默认只显 ...
- dedecms 使用
初看dedecms的后台界面就是一头雾水.不懂的词语多,什么模型,什么栏目,什么频道,不懂.相比于wordpress的分类category,标签tag,文章post,页面page而言,织梦后台难懂. ...
- ios-滚动视图滚动取消键盘
_scroll.keyboardDismissMode = UIScrollViewKeyboardDismissModeOnDrag;_SearchTable.keyboardDismissMode ...