Odoo 18 安全组与访问权限管理指南
一、准备工作:在自定义模块中创建安全配置文件
- 创建 security 文件夹
在自定义模块内创建名为security
的文件夹,用于存放安全组和访问权限的定义文件。
二、定义模型访问权限:ir.model.access.csv 文件
1. 创建访问权限文件
在 security
文件夹下创建 ir.model.access.csv
文件,定义模型的访问权限。
文件格式:
id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
2. 字段说明
字段 | 描述 |
---|---|
id | 记录的唯一标识符(如 access_模型名 ) |
name | 访问规则的名称(如 access.class.record ) |
model_id:id | 模型名称,格式为 model_<模型名> (如 model_class_record ) |
group_id:id | 关联的安全组(留空表示所有用户均可访问) |
perm_read | 读取权限(1=允许,0=拒绝) |
perm_write | 写入权限(1=允许,0=拒绝) |
perm_create | 创建权限(1=允许,0=拒绝) |
perm_unlink | 删除权限(1=允许,0=拒绝) |
3. 示例:无安全组限制的访问规则
id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
access_class_record,access.class.record,model_class_record,,1,1,1,1
- 说明:
group_id
留空:所有用户(包括管理员和普通用户)均可访问class.record
模型。- 权限字段均为
1
:允许读取、写入、创建和删除操作。
4. 应用访问规则
- 在模块的
__manifest__.py
文件的data
列表中添加 CSV 文件路径:'data': ['security/ir.model.access.csv',# 其他数据文件 ],
- 升级模块或重启 Odoo 使配置生效。
5. 通过界面查看访问权限
- 路径:
设置 > 技术 > 访问权限
- 操作:搜索模型名称(如
class.record
),查看已定义的访问规则及其关联的安全组和权限。
三、创建安全组:通过 XML 定义
1. 定义安全组 XML
在 security
文件夹下创建 security_groups.xml
文件:
<?xml version="1.0" encoding="UTF-8"?>
<odoo><data><!-- 创建安全组:学生管理员 --><record model="res.groups" id="student_group_manager"><field name="name">学生管理员</field><!-- 指定组分类为"管理" --><field name="category_id" ref="base.module_category_administration"/></record></data>
</odoo>
2. 更新模块清单文件
在 __manifest__.py
的 data
列表中添加 XML 文件路径:
{'data': ['security/security_groups.xml','security/ir.model.access.csv',],
}
3. 为用户分配安全组
-
添加用户到安全组:
进入设置 > 用户与公司 > 群组
,搜索创建的安全组(如 “学生管理员”),
在组的表单视图的用户
标签页下选择需要加入的用户。 -
更新访问规则以限制权限:
修改ir.model.access.csv
文件,将group_id:id
设置为安全组的 ID(如student_group_manager
):id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink access_class_record,access.class.record,model_class_record,student_group_manager,1,1,1,1
效果:只有属于该安全组的用户才能访问
class.record
模型。
4. 验证权限效果
-
管理员用户(属于该组):可查看和操作模型。
-
普通用户(不属于该组):无法看到模型。
四、总结
在 Odoo 18 中,通过安全组和访问权限管理可精准控制用户对数据和功能的访问,是保障系统安全和业务流程合规的核心机制。通过定义 ir.model.access.csv
规则、创建安全组并关联用户,企业可灵活适配组织架构和权限策略,确保数据安全的同时提升协作效率。