添加访问控制安全

来自Odoo大V社-odoo中文开发手册
95102545讨论 | 贡献2017年4月17日 (一) 10:27的版本

(差异) ←上一版本 | 最后版本 (差异) | 下一版本→ (差异)
跳转至: 导航搜索

使用 web 客户端,然后转到设置|技术|安全|访问控制列表,就可以给模型添加需要的访问规则,如图:


  • 小贴士

在这里我们可以看到一些模块的 ACL(访问控制列表)。它表明,每个安全组,在记录上允许何种行动。

这些信息是模块通过ir.model.access的数据文件加载的。我们将给员工组添加模块的所有访问权限。员工组几乎是每个人都属于的基本访问组。

创建CSV 文件security/ir.model.access.csv。添加以下内容︰

 id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
 acess_todo_task_group_user,todo.task.user,model_todo_task,base.group_user,1,1,1,1

文件名与要加载的数据的模块名相对应,并且该文件的第一行包含列名称。以下是我们的 CSV 文件中提供的列︰

 id是记录的外部标识符 (也称为 XML ID)。在我们的模块中它应该是唯一。
 name是一个描述标题。它只是内容展示,在模块中最好也保持其唯一性。官方模块通常使用模型名称和组的圆点分隔的字符串。遵循此约定,我们使用 todo.task.user
 model_id 是该模型的外部标识符。ORM给模型自动生成的 O的 XML Id︰ 如 todo.task,该标识符是model_todo_task
 group_id标识授予权限的访问组。最重要的一点是提供定义它的模块名前缀。比如员工组,它的标识符为base.group_user。 
 perm字段标记授予的读, 写, 创建,或删除权限。

我们不能忘记将引用添加到文件__manifest__.py的data属性中。就像这样︰

 'data': [
     ' security/ir.model.access.csv',
     ' views/todo_view.xml',
     'views/todo_menu.xml',
 ],

和以前一样,升级模块,添加的内容才能生效。现在,警告消息应该没有了,我们可以用demo(密码也是demo)用户登录,验证权限的正确性。现在如果我们重新测试,应该只会在测试 test_record_rule 用例时失败.

上一节:测试安全访问权限
下一节:Row-level访问规则