Apex类名修饰with sharing Vs without sharing

with sharing Vs without sharing

学习目标
1,了解with sharing和without sharing的作用和区别
2,什么时候使用with sharing和without sharing

对于新手来说(大神可忽视),在写一个Apex类的时候,工具会自动帮我们写成
public with sharing class helloWord{},可能新手会忽略这个问题。为什么要带with sharing?它有什么用?

with sharing和without sharing的作用和区别

1,with sharing:在类名前带上这个修饰符,那么类里涉及到的Sql查询,都会遵守当前用户的Profile,PermissionSet,Sharing Setting,Role等权限的并集。假设helloWord这个类有一个查询A对象的a字段的Dml操作。但是User A并没有该查询a字段的权限。那么加上with sharing就会出现查询结果为空。without sharing刚好相反,这家伙就是让该类避开系统的所有权限,只要能够调用这个类,那么里面所有的操作都不受权限管控。

什么时候使用with sharing和without sharing

1,当Apex类对应的是前台页面的控制类的时候,建议加上with sharing。这样方便限制记录的查看和读写。可以使用group和sharing setting去做控制记录的查看和读写。
2,当Apex类是Rest控制类是,(强烈建议)加上with sharing,因为rest类是供外部访问的,不加上会有安全隐患
3,在系统内部类和类之间的传递类,不涉及前台展示的类。比如工具类等,可以加上without sharing。这些基础类不做权限的控制。意味着只要出发的动作能出发这些类,就给他足够权限去做这件事情。这样做的好处是防止出现幽灵bug(找半天都找不出原因,最后发现是某个字段没权限)。

如果本文有错误,欢迎指出。一起学习,一起进步!

  • 4
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值