【发布时间】:2017-03-30 13:59:25
【问题描述】:
我需要在我的 JS 中通过 RPC 加载模型数据。
如果你这样做
ajax.jsonRpc("/web/dataset/call_kw", 'call', {
model: 'res.partner.category',
method: 'search_read',
[...]
你会得到一个 SessionExpiredError 因为这个控制器只允许经过身份验证的用户使用。要解决这个问题,您应该在每次需要这样的东西时定义您的自定义控制器,这很遗憾,因为 api 已经在那里了。
我目前有以下解决方法:
JS:
ajax.jsonRpc("/web/dataset/call_kw_pub", 'call', {
model: 'res.partner.category',
method: 'search_read',
[...]
PY:
from openerp.addons.web.controllers.main import DataSet as DataSetBase
class DataSet(DataSetBase):
@http.route([
'/web/dataset/call_kw_pub',
'/web/dataset/call_kw_pub/<path:path>'
], type='json', auth="public")
def call_kw_pub(self, model, method, args, kwargs, path=None):
if model not in ('partner.project.expertise', 'res.partner.category'):
return http.request.not_found()
return self._call_kw(model, method, args, kwargs)
ACL 似乎很好地处理了模型的访问权限,但为了保证安全,我只为某些模型启用了此功能。
如果这不是安全级别的问题,那么我们可以考虑允许公共访问标准控制器。有什么指点吗?
【问题讨论】:
-
你有什么问题?
-
问题在标题中;)无论如何,我在文本末尾添加了一个问号。
-
您应该阅读this。我不认为这属于 SO。
-
@CZoellner 这不是错误,是关于我的解决方法的问题。
-
好的,但在最后一次编辑之前,“安全漏洞”在标题中;-)
标签: javascript web openerp rpc anonymous