自定义权限(Custom Permission)

Salesforce默认提供了多种方式设定用户的权限,比如简档、权限集等。在这些设定中,已经包括了系统中的对象、应用、字段、页面布局等组件,管理员或开发者只需要设定权限等级即可。

当管理员或开发者需要设定更灵活的权限时,上面的方法便可能无法满足。为了解决这个问题,Salesforce提供了自定义权限(Custom Permission),让管理员或开发者可以设定完全自定义的权限,然后根据这些权限设定灵活决定各个组件的权限。

自定义权限的设定

在设置界面搜索“自定义权限”,点击“自定义权限”链接,即可进入自定义权限一览表。

点击新建按钮,即可新建自定义权限。

从截图中可以看到,自定义权限和简档、权限集等不同,没有各种组件的权限设定,而是只有基本的几个属性。用户在设定这些属性值以后,一个自定义权限就添加完成了。

但是自定义权限不能单独分配给用户,而是要包含在简档或权限集中,相当于它们的一个组成部分。

自定义权限的使用

和简档、权限集不同,自定义权限本身并不包含对任何组件的任何权限设定。它就像一张空白的通行证,能通向哪里需要管理员或开发者来灵活设定。

自定义权限可以在多种情况下使用。现在假设系统中已经添加了一个名称为“Example_CP”的自定义权限。

验证规则

在创建验证规则时,需要在“错误条件公式”中插入各种条件。自定义权限便可以在此处使用。

比如:当用户没有名为“Example_CP”的自定义权限时,验证规则失败。那么可以在“错误条件公式”中这样写:“NOT($Permission.Example_CP)”。这样,当进行验证的用户没有被分配“Example_CP”自定义权限时,验证失败。

数据库查询

在SOQL中,可以使用CustomPermission和其他相关对象来查询自定义权限相关的信息。

比如:

-- 查询所有包含了Example_CP自定义权限的权限集
SELECT Id, DeveloperName,
(select Id, Parent.Name, Parent.Profile.Name from SetupEntityAccessItems)
FROM CustomPermission
WHERE DeveloperName = 'Example_CP' -- 查询所有包含任意自定义权限的简档和权限集
SELECT Assignee.Name, PermissionSet.Id,
PermissionSet.Profile.Name,
PermissionSet.isOwnedByProfile,
PermissionSet.Label
FROM PermissionSetAssignment
WHERE PermissionSetId
IN (SELECT ParentId
FROM SetupEntityAccess
WHERE SetupEntityType = 'CustomPermission') -- 查询ID是userId变量的值的用户所拥有的权限
SELECT SetupEntityId
FROM SetupEntityAccess
WHERE SetupEntityType='CustomPermission'
AND ParentId IN
(SELECT PermissionSetId
FROM PermissionSetAssignment
WHERE AssigneeId=:userId)

Salesforce自定义权限简介的更多相关文章

  1. Salesforce 自定义标签在代码中的应用

    自定义标签简介 Salesforce 中自定义标签(Custom Label)的作用是存储一般性的文本,可以用于 Apex.Visualforce 页面.Lightning 组件等地方,用于显示提示信 ...

  2. SalesForce学习——权限管理

    Salesforce 对于权限的管理是非常严谨的并且支持不同维度的权限控制.常用的有简档.权限集.角色层级机构.组织范围. 简档:Profiles是Salesforce为每个用户指定的标准配置文件,在 ...

  3. Android自定义权限和使用权限

    本文来自http://blog.csdn.net/liuxian13183/ ,引用必须注明出处! 自定义权限,主要用于保护被赋予权限的组件.如无权限与有权限,正如public与private的对类保 ...

  4. Android权限安全(3)权限的分级和自定义权限

    Android的不同权限分级 Normal 一般apk都可以用, Dangerous 一般apk都可以用,但有提示 SignatureOrSystem 特定的private key签名的或系统的apk ...

  5. android - 解决“应用自定义权限重名”

    背景 现场的开发今天跟我说,测试包装不上!报错"应用自定义权限重名"!!! 网上百度下关键字,发现魅族手机有这个毛病,顺藤摸瓜:"http://bbs.flyme.cn/ ...

  6. 关于 DotNetCore 的自定义权限管理

    1.自定义权限需要扩展 Microsoft.AspNetCore.Authentication 实现一套接口 IAuthenticationHandler, IAuthenticationSignIn ...

  7. SharePoint REST API - 使用REST接口对列表设置自定义权限

    博客地址:http://blog.csdn.net/FoxDave SharePoint网站.列表和列表项都属于SecurableObject类型.默认情况下,一个安全对象继承父级的权限.对一个对 ...

  8. 如何给EOS账户设置自定义权限

    https://bihu.com/article/1508858 EOS从上线以后,不断有传出token被盗的消息,安全无小事,我们一定要重视,今天从EOS帐户自己定义权限的角度来谈谈如何做好账户的安 ...

  9. Android自定义权限

    一.自定义权限 自定义权限,一般是考虑到应用共享组件时的安全问题.我们知道在四大组件 AndroidManifest 中注册的时候,添加 exported = "true" 这一属 ...

随机推荐

  1. GraphQL:你的容颜,十万光年

    What? GraphQL 是一种类似于 SQL 的结构化查询语言,由 facebook 于2012年创造,于2015年开源.SQL 在服务端定义,GraphQL 在客户端定义,也就是说 GraphQ ...

  2. iOS开发笔记(Swift)-针对Swift调用PPiFlatSegmentedControl项目的一些修改

    PPiFlatSegmentedControl项目是一个很流行的开源iOS控件库,提供了扁平化风格(Flat style)的SegmentedControl,可以自定义segment的颜色,图标.大小 ...

  3. Python Socket请求网站获取数据

     Python Socket请求网站获取数据 ---阻塞 I/O     ->收快递,快递如果不到,就干不了其他的活 ---非阻塞I/0 ->收快递,不断的去问,有没有送到,有没有送到,. ...

  4. 【leetcode】20.有效的括号

    题目 给定一个只包括 '(',')','{','}','[',']' 的字符串,判断字符串是否有效.有效字符串需满足:左括号必须用相同类型的右括号闭合.左括号必须以正确的顺序闭合.注意空字符串可被认为 ...

  5. [视频]K8飞刀 WordPress XSS添加管理员 & GetShell 教程

    [视频]K8飞刀 WordPress  XSS添加管理员 & GetShell 教程 https://pan.baidu.com/s/1hq4LsmK

  6. Nginx + Keepalived负载均衡

    第一步: 下载keepalived地址:http://www.keepalived.org/download.html 解压安装: tar -zxvf keepalived-1.2.18.tar.gz ...

  7. session失效时间设置

    session失效时间设置 一.java代码 request.getSession().setMaxInactiveInterval(1800);/*秒为单位*/ 二.web.xml <sess ...

  8. Java NIO中的通道Channel(二)分散/聚集 Scatter/Gather

    什么是Scatter/Gather scatter/gather指的在多个缓冲区上实现一个简单的I/O操作,比如从通道中读取数据到多个缓冲区,或从多个缓冲区中写入数据到通道: scatter(分散): ...

  9. C#读取Cookie

    public class HttpCookie { [DllImport("wininet.dll", CharSet = CharSet.Auto, SetLastError = ...

  10. Linux(CentOS6)系统安装Windows字体

    这里说个插曲,最近在linux(CentOS6)服务器上面发布了个Web项目,结果发现,有一处的汉字字体渲染不出来,显示的是“□□□□”.因为我的tomcat编码已经修改了URIEncoding为UT ...