• 1 判断是否是Hwork的页面(http、https开头);
  • 2 调用hwork登录接口(terminal = 'pc')获取 accessTokenrefreshToken
  • 3 处理免登,依照和后端的约定,对url进行改造

后端根据 accessToken 来验证用户合法性

/*
    https://t-wbench.haier.net/api/sso/v1/jumpGateway?redirectUrl=xxx&userId=xxx&token=xxx&refreshToken=xxx
    redirectUrl: encodeURIComponent(url)
    userId: userId
    token: accessToken
    refreshToken: refreshToken
*/
https://t-wbench.haier.net/api/sso/v1/jumpGateway?redirectUrl=https%3A%2F%2Ft-wbench.haier.net%2Fbulletin%2Flist%3FuserId%3D19036275&token=eyJ0eXAiOiJqd3QiLCJhbGciOiJIUzI1NiJ9.eyJURVJNSU5BTC1UWVBFIjoicGMiLCJVU0VSLUVNQUlMIjoiemhhbmd5aW5nd2VuQGhhaWVyLmNvbSIsImlzcyI6Imh3b3JrLXByZSIsIlVTRVItTkFNRSI6IiVFNSVCQyVBMCVFOCU4QiVCMSVFNiU5NiU4NyIsIlVTRVItUEhPTkUiOiIxMzM1Njg4NTI4OSIsIlVTRVItUk9MRS1OQU1FIjoiJUU3JUFFJUExJUU3JTkwJTg2JUU1JTkxJTk4JTI4JUU0JUI4JTlBJUU1JThBJUExJTI5IiwiVVNFUi1XSE9MRS1ORVQiOjAsIlVTRVIiOiIxOTAzNjI3NSIsIlVTRVItUk9MRSI6IkdMWVlXX25ldyIsImlhdCI6MTY1MzYzMTkyMSwiZXhwIjoxNjUzNjM5MTIxfQ.rUnqYgc7OxqvCPQuuuy8NlkO5qusw2VDvBLLo1zNBYw&refreshToken=X7ATxOV4hn5D5OqNC4SN66YE88WgGU2fnEO5pEubxqmpFDTtTI+eN9pGryba+15u
  • 4 electron桌面端打开新的tab页

通过 electron webview属性,打开新的标签页

arr.push({
    name: item.componentName, // 组件的名称
    src, // 拼装好的url
    type: item.type,
    iconUrl: item.iconUrl ?? APP_DEFAULT_ICON, // tab小图标
    uniqueVal: item.uniqueVal // id
})
  • 5 外部项目打开新的tab页(公告列表页)

通过 window.open 方法来打开新的标签页

// 外部项目
window.open(componentUrl, JSON.stringify({
    type: 'opentab',
    name: componentName,
    uniqueVal: componentName + item.id,
    iconUrl: 'https://imstatic.haier.net/dev-workbench-static/app-notice-icon.png'
}))

// electron 桌面端 webview 监听new-window
webview.addEventListener('new-window', (e) => {
    if (e.frameName !== '_blank') {
        const newTabData = JSON.parse(e.frameName)

        console.log(newTabData);

        self.addNewTab({
            componentUrl: e.url,
            componentName: newTabData.name || '',
            uniqueVal: newTabData.uniqueVal,
            iconUrl: newTabData.iconUrl ?? APP_DEFAULT_ICON,
            type: 2,
            outLink: !e.url.includes('haier')
        })
    }
})