Odoo登陆机制和session_id cookie - xiaohao0576/odoo-doc GitHub Wiki

Odoo有一个Controller,是可以直接验证用户名称密码,然后返回合法的session_id的。

API的路径是/web/session/authenticate, 需要用POST方法

POST /web/session/authenticate HTTP/1.1
Host: your_odoo_instance
Content-Type: application/json

{
    "jsonrpc": "2.0",
    "params": {
        "db": "your_database_name",
        "login": "your_username",
        "password": "your_password"
    }
}

参考代码: https://github.com/odoo/odoo/blob/511153b695a1cd8fb6e4999d3313f4a9fce7fcd5/addons/web/controllers/session.py#L29

使用curl, postman都能调用这个接口,调用成功后,拿到合法的session_id,可以通过浏览器的开发者工具写入浏览器的cookie中,就能实现免密码登陆

注意,无法使用javascript去操作这个session_id, 因为odoo在用户打开网址登陆之前就在cookie中设置了一个临时的session_id,并且把httponly设置成了true,意思就是完全禁止javascript访问这个session_id