如何在Salesforce中检查用户对对象的CRUD权限?

ntn*_*nng 9 permissions crud salesforce apex-code

根据要求,如果用户没有对第三个对象的读访问权,我必须更改帐户的所有者.

我需要一个类似于isAccessible()描述字段结果的方法的功能,但它仅适用于当前登录的用户.

有没有其他方法可以检查用户对Apex代码中对象的CRUD权限?

Joh*_*ago 5

我在我的博客上写了一篇关于此的文章。API 24.0 版(Spring 版本)中刚刚发布了一项功能,可让您针对当前用户逐条记录地执行此操作。

以下是该博客条目的链接,其中包含详细信息:如何判断用户是否有权访问记录


Par*_*ana 0

从文档中。听起来你想使用匿名执行。

\n\n

Apex 通常在系统上下文中运行;也就是说,在代码执行期间不会考虑当前用户的权限、字段级安全性和共享规则。\xe2\x80\x8b 此规则的唯一例外是 Apex 代码,即通过executeAnonymous 调用执行。executeAnonymous 始终使用当前用户的完全权限执行。有关executeAnonymous的更多信息,请参阅匿名块。

\n\n

虽然 Apex 默认情况下不强制执行对象级和字段级权限,但您可以通过显式调用 sObject 描述结果方法(Schema.DescribeSObjectResult)和字段描述结果方法(Schema.DescribeSObjectResult)在代码中强制执行这些权限。描述字段结果),检查当前用户的访问权限级别。通过这种方式,您可以验证当前用户是否具有必要的权限,只有当他或她具有足够的权限时,您才能执行特定的DML操作或查询。

\n\n

例如,您可以调用 Schema.DescribeSObjectResult 的 isAccessible、isCreateable 或 isUpdateable 方法来分别验证当前用户是否具有对 sObject 的读取、创建或更新访问权限。同样,Schema.DescribeFieldResult 公开这些访问控制方法,您可以调用这些方法来检查当前用户对字段的读取、创建或更新访问权限。此外,您还可以调用Schema.DescribeSObjectResult提供的isDeletable方法来检查当前用户是否有权删除特定的sObject。

\n\n

http://www.salesforce.com/us/developer/docs/apexcode/index_Left.htm#StartTopic=Content/apex_classes_perms_enforcing.htm#kanchor431

\n