# E10 集成登录 ecode 二开方案

> 来源:`docs/E10集成登录ecode二开方案.doc`(WPS 文档,18 页)
> 作者:吴琦 | 主题:E10 自定义接口单点登录开发案例
> 提取日期:2026-06-23 | 提取方式:macOS `textutil -convert txt`

## 目录

1. [文档版本控制](#文档版本控制)
2. [一、概述](#一概述)
3. [1.1 集成登录单点 ecode 二开方案说明](#11-集成登录单点-ecode-二开方案说明)
4. [1.2 集成登录 ecode 二开方案时序图](#12-集成登录-ecode-二开方案时序图)
5. [二、ecode 本地开发环境搭建](#二ecode-本地开发环境搭建)
6. [2.1 项目模板下载](#21-项目模板下载)
7. [2.2 项目结构设置](#22-项目结构设置)
8. [2.3 项目依赖设置](#23-项目依赖设置)
9. [三、E10 自定义集成登录接口开发示例](#三e10-自定义集成登录接口开发示例)
10. [3.1 创建包路径及单点类](#31-创建包路径及单点类)
11. [3.3 自定义接口 - 单点登录第三方系统案例](#33-自定义接口---单点登录第三方系统案例)
12. [3.4 制作 jar 包](#34-制作-jar-包)
13. [四、部署 jar 包](#四部署-jar-包)
14. [4.1 部署 jar 包](#41-部署-jar-包)
15. [五、前端中转页二开](#五前端中转页二开)
16. [5.1 前端二开示例包导入](#51-前端二开示例包导入)
17. [5.2 二开包开发说明](#52-二开包开发说明)

## 一、概述

本文档介绍 E10 通过 ecode-gradle 项目二开自定义接口单点登录第三方系统的示例。

### 1.1 集成登录单点 ecode 二开方案说明

E10 集成登录自定义单点实现类原二开方案由于需要将二开 jar 包打到 E10 标准集成登录服务的依赖上,侵入性较强,不符合二开开发规范,现在新增加集成登录 ecode 接口二开方案。

此方案包含两部分开发:

- **前端二开 ecode 地址**:接收集成登录后端二开 ecode 接口返回的最终单点参数和单点地址,完成重定向单点登录跳转到第三方服务地址上,同时需要接收动态传递给前端 ecode 接口的单点参数,并将动态参数转发请求到后端 ecode 接口上。
- **后端二开 ecode 接口地址**:直接在后端 ecode 接口逻辑中,实现构造第三方系统所需要的单点登录参数和单点登录地址,并返回给前端 ecode 二开地址,由前端 ecode 二开地址完成最终的单点登录跳转。

当然如果需要借助标准集成登录的能力,可以在开发完 ecode 前后端接口地址后,直接在标准的集成登录配置中,新建通用配置,然后单点登录地址(外网地址)配置成该开发的前端 ecode 地址,然后使用访问标准的集成登录配置的单点登录地址来单点第三方。

### 1.2 集成登录 ecode 二开方案时序图

> 原文档此处为时序图,提取时无法保留,需查阅原文图片。

## 二、ecode 本地开发环境搭建

E10、ecode 后端自定义接口本地二开项目的搭建,这里可以使用提供的单点登录二开项目模板文件作为二开的项目来进行开发。二开项目文件附件地址:<https://www.e-cology.com.cn/sp/doc/docDetail/2000913662777997088>

### 2.1 项目模板下载

1. 下载上述提供的二开项目模板,解压到本地目录。
2. 使用 IDEA 打开该模板项目。

> 需要注意的是,该模板项目,IDEA 需要装有 gradle 插件,没有 gradle 插件,后面开发完成是无法将项目打包成 jar 包的。如果 IDEA 没有 gradle 插件,请自行在 IDEA 设置-插件里进行提前安装。

### 2.2 项目结构设置

项目打开后,对项目结构进行设置(原文含示意图):

1. 设置 JDK 为 java 1.8。
2. 设置源码路径和测试文件夹路径。

### 2.3 项目依赖设置

引入 E10 环境 jar 包依赖(原文含示意图):

1. 设置项目下的 `secDevLib` 文件夹为项目的 jar 来源库。
2. 将二开服务 `weaver-secondev-service/webapps/ROOT/WEB-INF/lib` 整个文件夹的 jar 包文件,打包导入 `secDevLib` 文件夹内。

这样自定义集成登录的本地二开项目就算搭建完成了,等待项目初始化完成后,即可开始开发自定义集成登录接口。

## 三、E10 自定义集成登录接口开发示例

上面搭建好 E10 自定义单点登录二开的本地开发环境,就可以开始开发自定义集成单点登录自定义接口了。

### 3.1 创建包路径及单点类

首先,在项目 `src/main/java/` 下,新建对应的开发目录和自定义接口类,可根据附件中的 demo 来开发。

### 3.2 自定义接口方法作用

**单点登录方法 `loginSingle()`**:

- 接收前端传递的动态单点参数。
- 构造最终单点参数及单点地址并返回给前端 ecode 地址。
- 默认路由:`/api/secondev/intlogin/sso/login`(可根据自定义调整,ecode 前端接口必须同步调整请求后端 ecode 接口地址)。

**单点登录配置属性项**:

查看 `SecondSsoConfig` 该类,可参考示例自定义需要用到的配置项。

### 3.3 自定义接口 - 单点登录第三方系统案例

> 原文档此处为示例示意图,提取时无法保留,需查阅原文图片或附件 demo。

### 3.4 制作 jar 包

开发完成后,将开发项目打成 jar 包(原文含示意图):

- 在 IDEA 中执行 `gradle build` 生成 jar。

## 四、部署 jar 包

### 4.1 部署 jar 包

1. 主团队管理员访问 `/ecode/monitor/loom/deploy/jar`,服务节点选择二开服务 `weaver-secondev-service`,检测服务状态。
2. 点击上传,选择刚才本地 build 好的 jar。
3. 1101 基线及以上,且运维平台版本 `V5.0.9.920241128-RC` 及以上,增加二开 jar 包上传校验功能,可参考相关文档:<https://weapp.eteams.cn/build/techdoc/wdoc/index.html>(路径:`/public/doc/f37c9e49-e4d7-4db0-a671-a9cae8d1db70`,二开 jar 包上传校验功能文档)。
4. 上传 jar 包后进入运维平台重启二开服务。

## 五、前端中转页二开

前端中转页通过 ecode 二开。您可以导入前端二开示例包,并在其基础上开发。

### 5.1 前端二开示例包导入

1. 进入 E10 ecode,访问路径为 OA 域名 + `/ecode/project`。
2. 新建项目,输入名称(名称无要求。如果已经存在项目,可以忽略这一步)。
3. 导入二开包。
4. 发布二开包:使用主租户账号,发布为公共应用。

### 5.2 二开包开发说明

中转页二开包发布后,访问 `E10 域名 + /sp/custom/loginSingle`,即可看到 loading 效果。

**功能地址**:

```text
// pc
/sp/custom/loginSingle

// mobile
/mobile/custom/loginSingle
```

**入参**:基于后端逻辑所需参数传入。

**调用后端接口,获取三方系统地址和参数**。核心实现在 `singleLogin` 方法中:

```js
// 需二开的方法,在次调用后端接口,传递参数
const singleLogin = () => {
  // 如果需要调用接口/sdk 等,请参照三方服务文档对接
  // todo 调用三方 sdk(如果三方服务不需要,请忽略该步骤)

  // 把参数传递给后端二开接口
  return new Promise(async (rs, rj) => {
    const data = await request({
      method: 'get',
      url: '/api/secondev/intlogin/sso/login',
      params: {
        ...urlParams
      }
    })
    rs(!!data.data) // 返回布尔值,根据二开接口调整
  })
}
```

Ecode 开发文档参考:<https://www.e-cology.com.cn/ecode/playground/doc/share/view/916733818655342593>(e10 定制开发背景和目标)。

前端二开包可从原文附件下载。

> 原文档含多张示意图(`INCLUDEPICTURE`/`EMBED`),提取时无法保留,需查阅原文 doc 文件。
