天天看点

odoo10参考系列--Odoo中的安全机制

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

这两种机制是通过组与特定的用户实现:一个用户属于任何个数的组,和安全机制相关联的组,从而将安全机制应用与用户。

访问控制

通过 

ir.model.access

 记录管理,定义了对整个模型的访问。

每个访问控制都有一个授予权限的模型、授予的权限和可选的组。

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

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

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

记录规则

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

记录规则有:

  • 它适用的模型
  • 它应用的一组权限(例如如果

    perm_read

     设置了值,只有在阅读记录时才会检查规则)
  • 规则应用的一组用户组,如果没有指定组,则规则是全局的
  • 用于检查给定记录是否与规则匹配(或可访问)或不(不可访问)相匹配的域。在上下文中使用两个变量对域进行评估: 

    user

     是当前用户的记录并且

    time

     是时间模块

全局规则和组规则(仅限于特定组的规则与应用于所有用户的组)完全不同:

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

这意味着,第一组规则限制访问,但任何进一步的组规则可扩展它,全局规则只能限制访问(或没有效果的时候)

警告

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

虽然应用了访问规则

字段访问

版本7中的新内容。

一个ORM 

Field

 可以有一个提供组列表(作为逗号分隔的外部标识符字符串)的

groups

 属性。

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

  • 受限字段会自动从请求视图中删除
  • 受限字段会自动从

    fields_get()

    响应中删除
  • 试图(显式地)读取或写入受限制字段会导致访问错误

工作流转换规则

工作流转换可以被限制到特定的组中。组外的用户不能触发转换。

ps:有翻译不当之处,欢迎留言指正。

原文地址:https://www.odoo.com/documentation/10.0/reference/security.html

继续阅读