내 JS에서 RPC를 통해 모델 데이터로드가 필요합니다.익명 사용자에게 rpc api에 액세스하는 방법
이 컨트롤러는 인증 된 사용자 만 허용되기 때문에이
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에 의해하지만 난 안전하게 유지하는 처리 보인다 일부 모델에서만이 기능을 사용할 수 있습니다.
보안 수준에서 문제가되지 않는다면 표준 컨트롤러에 대한 공개 액세스 허용을 고려할 수 있습니다. 어떤 포인터?
이는 https://github.com/OCA/web/pull/402과 관련이있을 수도
질문은 무엇입니까
web_session_allow_public
의 예비 이름으로, this pull request에에에 근무하고 있습니다? – Amy제목에 질문이 있습니다.) 어쨌든 텍스트 끝에 물음표를 추가했습니다. – simahawk
[this] (https://www.odoo.com/page/responsible-disclosure)를 읽어야합니다. 나는 이것이 SO에 속한다고 생각하지 않는다. – CZoellner