Odoo商城如何通过POST URL实现自动登录并跳转至用户购物车
Odoo跨站自动登录跳转购物车解决方案
你之前使用GET参数传递登录凭证的方案无法生效,Odoo/web/login路由仅接受POST请求提交登录信息,GET请求携带的账号密码不会被登录逻辑识别,同时Odoo默认开启CSRF防护,请求必须携带合法令牌才能完成校验。
实现步骤
1. 构造自动提交的POST表单
在外部跳转源页面插入如下代码,用户访问该页面时会自动向Odoo提交登录请求,登录完成后直接跳转至购物车页:
<!-- 替换为你的Odoo实际访问地址 --> <form id="odoo_auto_login_form" action="https://你的Odoo域名/web/login" method="POST"> <input type="hidden" name="db" value="pos-s99-01"> <input type="hidden" name="login" value="mail@gmail.com"> <input type="hidden" name="password" value="blabla"> <!-- 直接跳转购物车填写/shop/cart,跳转商品列表填写/shop --> <input type="hidden" name="redirect" value="/shop/cart"> <!-- Odoo 13及以上版本需要补充csrf_token字段,低于13版本可删除该行 --> <input type="hidden" name="csrf_token" value="提前获取的对应会话CSRF令牌"> </form> <script> window.addEventListener('load', () => { document.getElementById('odoo_auto_login_form').submit(); }) </script>
2. CSRF令牌获取
Odoo 13及以上版本要求所有POST请求必须携带CSRF令牌,获取方式如下:
- 先向Odoo的
/web路径发送一次无登录态的GET请求,从返回的响应Cookie中提取csrf_token字段值,填入表单对应位置即可 - 内部可信场景下,也可以通过Odoo二次开发自定义免CSRF校验的专属登录接口,跳过令牌校验步骤,该方案存在安全风险,不推荐公网环境使用
购物车内容保留说明
Odoo默认会将未登录状态下存储在用户本地Cookie中的购物车内容,在登录完成后自动合并到对应用户的账户下,不需要额外做适配处理。
安全注意事项
- 必须为Odoo配置HTTPS证书,禁止明文传输账号密码,避免凭证泄露
- 该方案仅适用于完全可控的内部业务场景,公开场景使用会导致用户账号密码泄露,存在极高安全风险
内容的提问来源于stack exchange,提问作者Marie B.
相关产品推荐
相关产品推荐

