宜兴通达竭诚为您服务。

通达科技 - 宜兴电脑维护及IT服务外包服务商

第五章:安全性 - 简介
  • 上传者: Administrator
  • 上传时间:2023年12月04日 01时57分56秒
摘要:
在  上一章 [1]  中,我们创建了第一个用于存储业务数据的表。在像Odoo这样的业务应用中,首要考虑的一个问题是谁可以访问数据。Odoo提供了一个安全机制,允许特定用户组访问数据。 安全性的主题在更多细节上有所涵盖  限制数据访问 [2] 。本章旨在涵盖我们新模块所需的最低限度。 数据文件(CS ......
正文 相关文章 请喝咖啡

    在 上一章 中,我们创建了第一个用于存储业务数据的表。在像Odoo这样的业务应用中,首要考虑的一个问题是谁可以访问数据。Odoo提供了一个安全机制,允许特定用户组访问数据。

    安全性的主题在更多细节上有所涵盖 限制数据访问。本章旨在涵盖我们新模块所需的最低限度。

    数据文件(CSV)

    Odoo 是一个高度数据驱动的系统。虽然行为是通过 Python 代码进行定制的,但模块的一部分价值在于加载时设置的数据。加载数据的一种方式是通过 CSV 文件。一个例子是 国家州列表,它在 base 模块安装时加载。

    "id","country_id:id","name","code"
    state_au_1,au,"Australian Capital Territory","ACT"
    state_au_2,au,"New South Wales","NSW"
    state_au_3,au,"Northern Territory","NT"
    state_au_4,au,"Queensland","QLD"
    ...
    
    • id is an external identifier. It can be used to refer to the record (without knowing its in-database identifier).

    • country_id:id refers to the country by using its external identifier.

    • name is the name of the state.

    • code is the code of the state.

    这三个字段在 res.country.state 模型中 定义

    按照惯例,导入数据的文件位于模块的 data 文件夹中。当数据与安全相关时,它位于 security 文件夹中。当数据与视图和操作相关时(我们稍后会介绍),它位于 views 文件夹中。此外,所有这些文件都必须在 __manifest__.py 文件的 data 列表中声明。我们的示例文件在 基础模块的清单中定义

    还要注意的是,数据文件的内容只有在安装或更新模块时才会被加载。

     警告

    数据文件按照它们在 __manifest__.py 文件中的顺序依次加载。这意味着如果数据 A 引用了数据 B,你必须确保 B 在 A 之前加载。

    在国家状态的情况下,您会注意到 国家列表 在 `国家状态列表 <https://github.com/odoo/odoo/blob/e8697f609372cd61b045c4ee2c7f0fcfb496f58a/odoo/addons/base/__manifest__.py#L29>`__之前被加载。 这是因为状态是指向国家的。

    为什么这对于安全很重要?因为模型的所有安全配置都是通过数据文件加载的,正如我们将在下一节中看到的那样。

    访问权限

    参考: 与此主题相关的文档可以在 访问权限 中找到。

     注解

    目标:在本节结束时,以下警告不应再出现:

    WARNING rd-demo odoo.modules.loading: The models ['estate.property'] have no access rules...
    

    当模型上没有定义访问权限时,Odoo 会确定没有用户可以访问数据。甚至在日志中通知此信息:

    WARNING rd-demo odoo.modules.loading: The models ['estate.property'] have no access rules in module estate, consider adding some, like:
    id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
    

    访问权限被定义为模型 ir.model.access 的记录。每个访问权限与一个模型、一个组(或全局访问时没有组)和一组权限相关联:创建、读取、写入和删除2。这些访问权限通常在名为 ir.model.access.csv 的 CSV 文件中定义。

    这是我们之前的 test_model 的一个例子:

    id,name,model_id/id,group_id/id,perm_read,perm_write,perm_create,perm_unlink
    access_test_model,access_test_model,model_test_model,base.group_user,1,0,0,0
    
    • id is an external identifier.

    • name 是 ir.model.access 的名称。

    • model_id/id 指的是适用于访问权限的模型。引用模型的标准方式是 model_<model_name>,其中 <model_name> 是模型的 _name,将 . 替换为 _。看起来很繁琐?确实如此…

    • group_id/id refers to the group which the access right applies to.

    • perm_read,perm_write,perm_create,perm_unlink: read, write, create and unlink permissions

     Exercise

    添加访问权限。

    在适当的文件夹中创建 ir.model.access.csv 文件,并在 __manifest__.py 文件中定义它。

    给组 base.group_user 赋予读取、写入、创建和删除权限。

    提示:日志中的警告信息已经给出了大部分的解决方案 ;-)

    重启服务器,警告信息应该已经消失了!

    现在是时候最终与UI进行交互了 <tutorials/getting_started/06_firstui>`!

    1

    指的是哪个Odoo用户(或用户组)

    ‘unlink’ 相当于 ‘delete’

    本文章从网上收集,如有侵权请联系tderp@tderp.com删除
  • 微信扫一扫,一分也是爱:
  • 微信

服务原则及地区范围

宜兴通达网络科技有限公司,地处中国宜兴环科园内,是一家高新技术企业。公司在企业网络维护和企业信息化建设与咨询方面,有10多年经验。

我公司愿与客户一道,力求彻底解决客户问题!
我们不是在给企业提供“头痛医头、脚痛医脚”的暂时解决方案,而是在部署根本性安全与稳定服务!!
我们愿携手客户,建立企业IT规划;杜绝随意安装系统、软件等操作;力求共同维护有序、安全、稳定的网络办公环境!!!
IT服务,服务是根本,客户是上帝;我们提供快速响应、快速上门、快速排查,提供优质高效的服务!!!!

通达科技提供全国范围内的服务,服务形式包括远程协助、电话咨询、电子邮件咨询、传真咨询、问答平台的问题解决等。

宜兴地区提供上门服务:

  • 市区服务:宜城街道、城北街道(屺亭街道)、新街街道、新庄街道、环科园、渚桥开发区
  • 市郊服务:张渚镇、西渚镇、太华镇、徐舍镇、官林镇、杨巷镇、新建镇、和桥镇、高塍镇、万石镇、周铁镇、芳桥镇、丁蜀镇、湖父镇。
  • 联系电话:189-21-343434
  • 在线沟通: