Odoo中如何无需硬编码站点URL将用户重定向到登录页做二次验证
解决方案
- 原代码基础修复:遗漏
return关键字,Odoo无法识别触发重定向动作,必须补充返回动作字典 - 动态获取站点URL:调用Odoo内置系统参数
web.base.url获取当前站点根地址,该参数在Odoo部署时自动配置,无需硬编码托管地址 - 二次验证回调适配:重定向到登录地址时追加
redirect参数,用户完成身份校验后会自动跳转回指定业务页面,无需额外交互
def authorize_execute_payments(self): # 动态取当前站点根路径 base_url = self.env['ir.config_parameter'].sudo().get_param('web.base.url') # 配置验证完成后的回跳地址,示例为跳回当前记录的表单页 redirect_path = f"/web#id={self.id}&model={self._name}&view_type=form" # 拼接带回调的二次验证登录地址 login_verify_url = f"{base_url}/web/login?redirect={redirect_path}" return { "type": "ir.actions.act_url", "url": login_verify_url, "target": "self", }
若逻辑在HTTP控制器内触发,也可直接通过
request.httprequest.host_url获取当前请求的域名,效果与读取web.base.url一致。
内容的提问来源于stack exchange,提问作者A.Sasori
相关产品推荐
相关产品推荐

