ODOO V16中web/session/authenticate接口返回'NoneType'无user属性错误
Odoo 16 认证接口返回 'NoneType' object has no attribute 'user' 错误解决
问题分析
从错误栈能定位核心问题:调用 ir.http.session_info() 时,request 对象为 None,无法访问 request.env.user。关键代码行 /odoo-16/addons/web/controllers/session.py", line 52, in authenticate print('session_info', env['ir.http'].session_info()) 显示,大概率是自定义修改了Odoo核心模块的代码——原版Odoo 16的authenticate方法不会直接用env调用session_info,而是先完成会话认证,再通过request.env获取。此外,请求格式不符合Odoo JSON-RPC 2.0规范,也可能导致请求上下文未正确初始化。
解决方案
1. 恢复web模块核心代码
如果修改过addons/web/controllers/session.py文件,删除添加的print('session_info', env['ir.http'].session_info())语句,恢复原版认证逻辑:
def authenticate(self, db, login, password, base_url=None): request.session.authenticate(db, login, password) return request.env['ir.http'].session_info()
2. 修正请求体格式
确保POST请求体符合Odoo JSON-RPC 2.0完整格式,必须包含jsonrpc和id字段:
{ "jsonrpc": "2.0", "id": 1, "params": { "db": "你的数据库名", "login": "你的用户名", "password": "你的密码" } }
3. 排查冲突模块
若未修改核心代码,检查是否安装了自定义或第三方模块(涉及会话、HTTP请求处理的模块),这类模块可能重写了session_info方法导致上下文异常。可尝试禁用非核心模块后重新测试。
内容的提问来源于stack exchange,提问作者abdeltif-b
相关产品推荐
相关产品推荐

