博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Odoo 学些 【三】 安全性
阅读量:5766 次
发布时间:2019-06-18

本文共 2489 字,大约阅读时间需要 8 分钟。

先收藏一篇博文: 。

Odoo 在安全层面上是非常灵活的,可以控制在不同层面上控制用户做些什么。同时我们也可以对增、读、写、删这四个基本操作来单独操作。

Odoo系统内置的一些用户组,在./openerp/addons/base/security/base_security.xml这个文件中定义:

Access Rights
Settings
Employee
Multi Companies
Multi Currencies
Technical Features
User
Manager

数据模型定义在res_users.py中,主要字段如下:

'users': fields.many2many('res.users', 'res_groups_users_rel', 'gid', 'uid', 'Users'),  'model_access': fields.one2many('ir.model.access', 'group_id', 'Access Controls', copy=True),  'rule_groups': fields.many2many('ir.rule', 'rule_group_rel',  'group_id', 'rule_group_id', 'Rules', domain=[('global', '=', False)]),  'menu_access': fields.many2many('ir.ui.menu', 'ir_ui_menu_group_rel', 'gid', 'menu_id', 'Access Menu'),  'view_access': fields.many2many('ir.ui.view', 'ir_ui_view_group_rel', 'group_id', 'view_id', 'Views'),   'category_id': fields.many2one('ir.module.category', 'Application', select=True),

users: 指定了组里面的用户。

menu_access: 指定了组里面可访问的菜单,视图层面上。

view_access:指定了组里面的可访问的视图,视图层面上。

rule_groups: 指定了组里面的规则,记录级别,给定模型记录的子集,真实对象层面上。

model_access:指定了组里面的模型,对模型的访问的加以控制,真实对象层面上。

category_id: 指定了组所属的Odoo Module分类。

implied_ids:指定了从指定的组继承过来其权限。

视图层面

我们在 视图字段/视图菜单 级别可以这样做:

  • 对某些用户显示或隐藏字段
  • 使字段对某些用户只读,对某些用户可编辑
  • 对不同的用户,显示不同的变量来用于选择字段

添加groups属性即可,比如:。

在字段安全层级上,要使用res.usersres.groups模型,这些模型是彼此是多对多的关系。

模型层面

这些访问权利通常会被定义在ir.model.access.csv中,这些数据会被存储在ir_model_acess表中,例如:

id,name,model_id/id,group_id/id,perm_read,perm_write,perm_create,perm_unlinkaccess_idea_idea,idea.idea,model_idea_idea,base.group_user,1,1,1,0

id: 外部标示ID,也就是XML ID,唯一性。

name:描述性标题,最好醒目,唯一。
model_id:我们要访问的数据模型的外部标识ID,ORM默认会自动生成这个ID。
group_id:要赋予的权限组,XML ID。
perm_curd: 是具体的权限分配。

记录层面

'global': fields.function(_get_value, string='Global', type='boolean', store=True, help="If no group is specified the rule is global and applied to everyone"),      'groups': fields.many2many('res.groups', 'rule_group_rel', 'rule_group_id', 'group_id', 'Groups'),      'domain_force': fields.text('Domain'),      'domain': fields.function(_domain_force_get, string='Domain', type='binary'),

global:如果未指定,将会将该规则设置该字段为全局。

groups: 安全规则应用的用户组。
domain_force': 筛选域,文本。
domain: 从domain_force来计算范化筛选域。

转载于:https://www.cnblogs.com/baishoujing/p/9010140.html

你可能感兴趣的文章
AE 打开各种格式文件
查看>>
One Person Game(概率+数学)
查看>>
CodeForces 258B Little Elephant and Elections :于1-m中找出七个数,使六个数里面的4和7个数比第七个数严格小:数位dp+dfs...
查看>>
MAP
查看>>
手把手教你测——上网快鸟
查看>>
阿里资深技术专家总结:要怎样努力才可以成为公司主力架构师
查看>>
字符串的截取和替换常用方法
查看>>
WebBase(基于AS3的Flash全站基架)
查看>>
C#直接读取磁盘文件(类似linux的Direct IO模式)
查看>>
nodejs socket server 强制关闭客户端连接
查看>>
Ffmpeg包中的Libavformat和libavcodec库的简单应用
查看>>
PostgreSQL 的 target_list分析(五)
查看>>
sql server 游标continue,总是死循环
查看>>
HMAC算法AS3版
查看>>
Window 8 启用 Telnet 命令工具一览图
查看>>
《gradle 用户指南》中文版 目录
查看>>
收购/代理游戏或其它成熟的在线应用
查看>>
iOS推送通知的实现步骤
查看>>
SharedPreferences存储
查看>>
javascript Date format(js日期格式化)
查看>>