You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Odoo 14社区版自定义登录页对接系统及替换默认页配置咨询

Odoo 14 Community 自定义登录页对接与替换方案

一、自定义登录页对接Odoo系统

有两种可行方案,根据你的页面开发场景选择:

  • 方案1:调用Odoo登录API
    用POST请求调用Odoo内置的/web/session/authenticate接口,请求体为JSON格式,需传入以下核心参数:

    • db:目标登录的数据库名称
    • login:用户账号
    • password:用户密码
    • csrf_token:先通过GET请求/web/session/get_csrf_token获取(请求需携带Odoo的Session Cookie)

    示例JavaScript实现:

    // 先获取CSRF Token
    fetch('/web/session/get_csrf_token', { credentials: 'include' })
      .then(res => res.json())
      .then(data => {
        // 发起登录请求
        fetch('/web/session/authenticate', {
          method: 'POST',
          credentials: 'include',
          headers: {
            'Content-Type': 'application/json',
            'X-CSRF-Token': data.csrf_token
          },
          body: JSON.stringify({
            jsonrpc: '2.0',
            method: 'call',
            params: {
              db: 'your_database_name',
              login: 'user@example.com',
              password: 'your_password'
            },
            id: 1
          })
        })
        .then(res => res.json())
        .then(result => {
          if (result.result) {
            // 登录成功跳转至Odoo首页
            window.location.href = '/web';
          } else {
            // 处理登录失败逻辑
            alert('登录失败:' + result.error.message);
          }
        });
      });
    
  • 方案2:表单直接提交至Odoo默认登录地址
    将自定义页面的表单action属性设为Odoo的/web/login,表单字段名与Odoo默认登录页保持一致即可:

    <form action="/web/login" method="post">
      <!-- 隐藏字段:CSRF Token,需从Odoo获取后填充 -->
      <input type="hidden" name="csrf_token" value="your_csrf_token">
      <!-- 数据库字段:可固定值或做下拉选择 -->
      <input type="text" name="db" value="your_database_name">
      <!-- 用户名输入框 -->
      <input type="text" name="login" placeholder="账号">
      <!-- 密码输入框 -->
      <input type="password" name="password" placeholder="密码">
      <button type="submit">登录</button>
    </form>
    

    注意:CSRF Token需通过/web/session/get_csrf_token接口获取,若自定义页面与Odoo同域名,也可从Odoo的Cookie中解析获取。

二、配置Odoo替换默认登录页为自定义页面

推荐用自定义模块实现,避免修改Odoo核心代码导致升级丢失:

  1. 创建自定义模块(示例命名为custom_login),模块结构如下:
    custom_login/
    ├── __init__.py
    ├── __manifest__.py
    └── views/
        └── templates.xml
    
  2. 编写__manifest__.py模块配置文件:
    {
        'name': 'Custom Login Page',
        'version': '1.0',
        'summary': 'Replace default login page with custom one',
        'depends': ['web'],
        'data': [
            'views/templates.xml',
        ],
        'installable': True,
        'application': False,
        'auto_install': False,
    }
    
  3. 编写views/templates.xml模板覆盖文件:
    若直接嵌入自定义登录HTML:
    <odoo>
        <template id="login" inherit_id="web.login">
            <xpath expr="//div[@class='oe_login_container']" position="replace">
                <div class="custom_login_container">
                    <h1>自定义登录页</h1>
                    <!-- 嵌入你的登录表单及逻辑 -->
                    <form action="/web/login" method="post">
                        <input type="hidden" name="csrf_token" t-att-value="request.csrf_token()"/>
                        <input type="text" name="db" t-att-value="request.session.db"/>
                        <input type="text" name="login" placeholder="请输入账号"/>
                        <input type="password" name="password" placeholder="请输入密码"/>
                        <button type="submit">登录</button>
                    </form>
                </div>
            </xpath>
        </template>
    </odoo>
    
    若要重定向到外部自定义页面:
    <odoo>
        <template id="login" inherit_id="web.login">
            <t position="replace">
                <script>
                    window.location.href = 'your-custom-login-page-url';
                </script>
            </t>
        </template>
    </odoo>
    
  4. 安装模块:将模块放入Odoo的addons目录,重启Odoo服务,在应用列表中找到Custom Login Page模块并安装即可生效。

若临时测试不想创建模块,也可直接修改Odoo核心的web/views/webclient_templates.xml中的login模板,但此方法不推荐,升级Odoo后修改会被覆盖。

内容的提问来源于stack exchange,提问作者holydragon

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.05 15:52:57