Конечная точка API "web/session/authenticate" возвращает ошибку вместо session_info в ODOO V16

Я использую одоо V16. Когда я отправляю запрос POST в конечную точку web/session/authenticate с правильными учетными данными пользователя в теле, например:

      {
    "params": {
        "db":<DB>,
        "login": <LOGIN>,
        "password": <PASSWORD>
    }
}

Я получаю плохой ответ с сообщением об ошибке «Объект NoneType не имеет атрибута« пользователь »» . Ожидаемое поведение — это ответ JSON с информацией о сеансе, например:

      {
    "jsonrpc": "2.0",
    "id": null,
    "result": {...}
} 

Я не уверен, что это ошибка в новой версии odoo или я что-то делаю не так. Любая помощь приветствуется. Спасибо!

Полный ответ об ошибке :

{ "jsonrpc": "2.0", "id": null, "error": { "code": 200, "message": "Ошибка сервера Odoo", "data": { "name": "builtins.AttributeError" , "debug": "Traceback (последний последний вызов): файл "/odoo-16/odoo/http.py", строка 1963, вызовresponse = request._serve_nodb() File "/odoo-16/odoo/http.py", строка 1516, в _serve_nodb response = self.dispatcher.dispatch(rule.endpoint, args) File "/odoo-16/odoo/http .py", строка 1775, результат отправки = endpoint(**self.request.params) Файл "/odoo-16/odoo/http.py", строка 673, результат route_wrapper = endpoint(self, *args, **params_ok) Файл "/odoo-16/addons/web/controllers/session.py", строка 52, в аутентификации print('session_info', env['ir.http'].session_info()) Файл "/odoo- 16/addons/web_tour/models/ir_http.py", строка 12, в session_info result = super().session_info() File "/odoo-16/addons/web/models/ir_http.py", строка 68, в session_info user = request.env.user AttributeError: объект «NoneType» не имеет атрибута «пользователь» ", "сообщение": "Объект 'NoneType' не имеет атрибута 'user'", "arguments": [ "Объект 'NoneType' не имеет атрибута 'user'" ], "context": {} } } }

1 ответ

Я столкнулся с той же проблемой, и я нашел обходной путь.

Проблема

Проблема возникает, когда вы вызываете API Odoo для аутентификацииweb/session/authenticate.

Обычно мы отправляем данные для входа вPOSTзапрос к серверу

      {"params":{"db":"odoo16","login":"admin","password":"***"}}

Я получил сообщение об ошибке:

         File "/usr/lib/python3/dist-packages/odoo/addons/mail/models/ir_http.py", line 17, in session_info
     user = request.env.user
 AttributeError: 'NoneType' object has no attribute 'user'

Решение

Эта проблема возникает, когда у вас есть many databasesна сервере, поэтому обработчик запросов не может получитьuserотenvпеременная.

Но если вы обновите свойodoo.confи добавилdbfilter = odoo16, и перезапустите сервер. у вас будет только одна такая база данных:

Затем, если вы вызовете API, вы получите ПРАВИЛЬНЫЙ ответ и works fineс тобой,

      {
    "jsonrpc": "2.0",
    "id": null,
    "result": {
        "uid": 2,
        "is_system": true,
        "is_admin": true,
        "user_context": {
            "lang": "en_US",
            "tz": "Africa/Cairo",
            "uid": 2
        },
        ...
        ...
        ...
    }
}

Надеюсь, это поможет вам решить вашу проблему, пока Odoo не исправит эту ошибку.

Другие вопросы по тегам