Odoo 12访问ir.config_parameter出现权限错误的原因及解决方法
Odoo 12 权限报错问题解决方案
报错原因
- Odoo 系统内置的配置参数模型
ir.config_parameter预设的访问权限仅开放给 Administration/Settings 用户组成员,普通业务用户默认不具备该模型的read权限 - 你提供的代码中,
request_recuitment_send_mail方法里使用request.env['ir.config_parameter'].get_param('web.base.url')读取系统配置时,默认使用当前登录用户的权限上下文校验,当无管理员权限的普通用户(错误提示中的用户ID 21)触发该逻辑时,就会抛出权限不足的错误
修复方案
方案1:添加sudo()绕过权限校验(最简便)
直接在访问 ir.config_parameter 时调用sudo()方法,临时提升权限读取配置,无需修改全局权限规则:
将原代码行:
base_url = request.env['ir.config_parameter'].get_param('web.base.url')
修改为:
base_url = request.env['ir.config_parameter'].sudo().get_param('web.base.url')
注意:该方案仅适用于读取公开系统配置的场景,不要随意在敏感数据读写逻辑中滥用
sudo(),避免产生权限溢出的安全风险
方案2:为指定用户组配置访问权限
如果有多个普通用户需要读取系统配置参数,可以手动调整权限规则:
- 登录Odoo管理员账号,进入 设置 > 技术 > 安全 > 访问控制列表
- 搜索找到模型
ir.config_parameter对应的权限记录,或新建一条权限规则 - 为对应业务用户组(如HR用户组)勾选
read权限,其余创建、编辑、删除权限保持关闭 - 刷新权限或升级对应模块后生效
方案3:避免直接访问ir.config_parameter
你也可以将需要用到的系统参数提前同步到自定义业务模型的字段中,业务逻辑直接读取自定义模型的字段值,从根源上避免访问权限受限的ir.config_parameter模型
内容的提问来源于stack exchange,提问作者Tung Van
相关产品推荐
相关产品推荐

