Odoo 8技术问询:配置安全组限制purchase.order图表视图访问无效求助
解决Odoo中Purchase Order图表视图的权限限制问题
我之前配置Odoo视图权限时也碰到过完全一样的情况——明明把视图和用户组绑定好了,非组内用户却还是能访问。结合你不想新建动作窗口和菜单的需求,可以按以下步骤排查解决:
1. 确认视图groups_id的配置准确性
先检查你的图表视图XML定义,确保groups_id是直接关联到目标用户组,而非继承了父视图的无权限设置。正确的配置示例如下:
<record id="view_purchase_order_graph_custom" model="ir.ui.view"> <field name="name">purchase.order.graph.custom</field> <field name="model">purchase.order</field> <!-- 若继承默认图表视图,需添加inherit_id --> <field name="inherit_id" ref="purchase.view_purchase_order_graph"/> <field name="arch" type="xml"> <!-- 你的图表自定义内容(如有) --> </field> <!-- 关联目标用户组,用(4, ref('组ID'))添加关联关系 --> <field name="groups_id" eval="[(4, ref('your_module.restricted_purchase_graph_group'))]"/> </record>
如果是新建独立图表视图(非继承),则无需inherit_id字段,但要确保该视图是当前动作窗口引用的那一个。
2. 在视图Arch中添加groups属性做双重限制
有时候仅靠groups_id字段可能存在漏洞(比如用户直接通过URL访问视图),可以在图表根节点上添加groups属性,直接限制视图内容的可见性:
<graph groups="your_module.restricted_purchase_graph_group"> <!-- 原图表内容 --> </graph>
这样一来,即使非组内用户通过特殊方式触发视图加载,也看不到任何内容,同时视图切换的下拉选项也会被自动隐藏。
3. 排查是否有继承视图覆盖了权限
检查是否有其他模块的继承视图修改了该图表视图的groups_id设置——有些模块可能会移除权限关联导致失效。你可以在开发者模式下,进入设置 > 技术 > 用户界面 > 视图,搜索purchase.order.graph相关视图,查看所有继承视图的权限配置,确保没有冲突。
4. 清除缓存并重新升级模块
Odoo的权限缓存偶尔会导致新设置不生效,你可以:
- 进入开发者模式,点击右上角的刷新缓存按钮
- 重新升级你的自定义模块
- 必要时重启Odoo服务
5. 验证非组内用户的访问权限
最后用非目标组的用户账号登录,检查两点:
- 采购订单页面的视图切换菜单中是否还能看到图表视图选项
- 尝试直接输入图表视图的URL(比如
/web#id=1&model=purchase.order&view_type=graph),看是否能加载出内容
完成以上步骤后,应该就能实现仅指定用户组访问该图表视图的需求了。
内容的提问来源于stack exchange,提问作者guidev224
相关产品推荐
相关产品推荐

