Ich brauche Modelldaten über RPC in meinem JS laden.wie anonymen Benutzer Zugriff auf rpc api geben
Wenn Sie dies tun
ajax.jsonRpc("/web/dataset/call_kw", 'call', {
model: 'res.partner.category',
method: 'search_read',
[...]
Sie SessionExpiredError bekommen, weil diese Steuerung nur für authentifizierte Benutzer erlaubt ist. Um dies zu umgehen, sollten Sie jedes Mal, wenn Sie etwas benötigen, Ihren eigenen Controller definieren, was sehr schade ist, da die API bereits vorhanden ist.
Ich habe die folgende Problemumgehung im Moment:
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)
Zugriffsrechte Modell gut durch ACLs behandelt scheint aber sicher zu bleiben, ich bin Aktivieren Sie dies nur für einige Modelle.
Wenn dies auf Sicherheitsstufe kein Problem ist, könnten wir darüber nachdenken, öffentlichen Zugang zum Standard-Controller zu erlauben. Irgendwelche Zeiger?
wurde Dies könnte zu https://github.com/OCA/web/pull/402 Zusammenhang zu
Was ist Ihre Frage? – Amy
Die Frage war im Titel;) Ich habe am Ende des Textes trotzdem ein Fragezeichen angehängt. – simahawk
Sie sollten [diese] (https://www.odoo.com/page/responsible-disclosure) lesen. Ich glaube nicht, dass das zu SO gehört. – CZoellner