Odoo Rest-API 验证失败
Odoo Rest-API Failing to authenticate
我在 odoo12 中创建了一个 rest-api 模块并使用邮递员检查端点但是我在尝试验证用户时收到以下错误
没有为路径“/web/session/authenticate/”提供 CSRF 验证令牌
Odoo URL 默认受 CSRF 保护(使用不安全访问时
HTTP 方法)。看
https://www.odoo.com/documentation/12.0/reference/http.html#csrf 为
更多详情。
如果通过 py-QWeb 表单通过 Odoo 访问此端点,则嵌入 CSRF
形式的代币,代币可通过 request.csrf_token()
可以通过隐藏输入提供,并且必须被命名为 POST
csrf_token
例如在您的表格中添加:
如果表单是在javascript中生成或发布的,则token值为
在 web.core
上作为 csrf_token
可用,在 csrf_token
上可用
列表项
默认 js-qweb 执行上下文中的值
- 如果外部第三方访问表单(例如 REST API
端点、支付网关回调)您将需要禁用 CSRF
保护(并在必要时实施您自己的保护)
将
csrf=False
参数传递给 route
装饰器。
一个快速但不推荐的修复方法是在身份验证方法路由中添加 csrf=false,正如他们在第 3 点中所说的,不确定为什么不推荐,但可能会降低来自网络的路由的安全性,但对于 API 就这样了好
from odoo.addons.web.controllers.main import Home
class HomeExt(Home):
@http.route(csrf=false)
def authenticate(self, db, login, password, base_location=None):
request.session.authenticate(db, login, password)
return request.env['ir.http'].session_info()
我在 odoo12 中创建了一个 rest-api 模块并使用邮递员检查端点但是我在尝试验证用户时收到以下错误
没有为路径“/web/session/authenticate/”提供 CSRF 验证令牌
Odoo URL 默认受 CSRF 保护(使用不安全访问时 HTTP 方法)。看 https://www.odoo.com/documentation/12.0/reference/http.html#csrf 为 更多详情。
如果通过 py-QWeb 表单通过 Odoo 访问此端点,则嵌入 CSRF 形式的代币,代币可通过
request.csrf_token()
可以通过隐藏输入提供,并且必须被命名为 POSTcsrf_token
例如在您的表格中添加:如果表单是在javascript中生成或发布的,则token值为 在
web.core
上作为csrf_token
可用,在csrf_token
上可用
列表项
默认 js-qweb 执行上下文中的值
- 如果外部第三方访问表单(例如 REST API
端点、支付网关回调)您将需要禁用 CSRF
保护(并在必要时实施您自己的保护)
将
csrf=False
参数传递给route
装饰器。
- 如果外部第三方访问表单(例如 REST API
端点、支付网关回调)您将需要禁用 CSRF
保护(并在必要时实施您自己的保护)
将
一个快速但不推荐的修复方法是在身份验证方法路由中添加 csrf=false,正如他们在第 3 点中所说的,不确定为什么不推荐,但可能会降低来自网络的路由的安全性,但对于 API 就这样了好
from odoo.addons.web.controllers.main import Home
class HomeExt(Home):
@http.route(csrf=false)
def authenticate(self, db, login, password, base_location=None):
request.session.authenticate(db, login, password)
return request.env['ir.http'].session_info()