odoo官方文档第七章 Security in Odoo(odoo的权限)

Security in Odoo

除了使用自定义代码手动管理访问外,Odoo还提供了两种主要的数据驱动机制来管理或限制对数据的访问。

这两种机制都通过组链接到特定用户:用户属于任意数量的组,安全机制与组相关联,从而将安全机制应用于用户。

Access Control

ir.model.access记录管理,定义对整个模型的访问。

每个访问控制都有一个模型,它授予权限,授予权限以及可选的组。

访问控制是附加的,对于给定模型,用户可以访问授予其任何组的所有权限:如果用户属于允许写入的一个组而另一个允许删除的组,则它们都可以写入和删除。

如果未指定组,则访问控制适用于所有用户,否则仅适用于给定组的成员。

可用权限包括创建(perm_create),搜索和读取(perm_read),更新现有记录(perm_write)和删除现有记录(perm_unlink

Record Rules

记录规则是记录必须满足的条件,允许操作(创建,读取,更新或删除)。 在应用访问控制之后,它将逐个记录地应用。

记录规则有:

  • 适用的模型
  • 它应用的一组权限(例如,如果设置了perm_read,则只会在读取记录时检查规则)
  • 应用规则的一组用户组,如果未指定组,则规则为全局
  • 用于检查给定记录是否与规则匹配(且可访问)或不匹配(且不可访问)的域。 在上下文中使用两个变量评估域:user是当前用户的记录,time是时间模块

全局规则和组规则(限于特定组的规则与适用于所有用户的组的规则)使用方式完全不同:

  • 全局规则是减法的,它们必须匹配才能访问记录
  • 组规则是相加的,如果它们中的任何一个匹配(并且所有全局规则匹配),则可以访问该记录

这意味着第一个组规则限制访问,但任何进一步的组规则都会扩展它,而全局规则只能限制访问(或不起作用)。

警告
记录规则不适用于管理员用户

Field Access

7.0版中的新功能。

ORMfield可以具有提供组列表的groups属性(作为逗号分隔的外部标识符字符串)。

如果当前用户不在列出的某个组中,则他将无法访问该字段:

  • 受限制的字段会自动从请求的视图中删除
  • fields_get()响应中删除受限制的字段
  • 尝试(显式地)读取或写入受限制的字段会导致访问错误
原文地址:https://www.cnblogs.com/myt2000/p/9669190.html