1

我有一个电子应用程序,有时会在公司防火墙后面使用。

我已向应用程序添加了一个登录事件侦听器,并通过对话框向用户请求用户名和密码。
如果用户第一次正确输入他们的详细信息,它工作正常,但如果第一次尝试出错,然后用户第二次输入正确的详细信息,请求似乎停止然后超时。如果我激活另一个 HTTP 请求,创建第三个身份验证请求,并正确输入详细信息,它就可以工作。

以下是当前形式的主进程的代码:

const requestHistory = [];

let onAuthCallback = function (username, password) {
  const lastIndex = requestHistory.length - 1;
  if (lastIndex < 0) {
    return;
  }

  const {callback} = requestHistory[lastIndex];
  callback(username, password);
};

app.on('login', (event, webContents, request, authInfo, callback) => {
  event.preventDefault();
  mainWindow.webContents.send('proxy-auth:req', authInfo);
  requestHistory.push({event, webContents, request, authInfo, callback});
});

ipcMain.on('proxy-auth:userpass', (event, userpass) => {
  console.info('userpass:', userpass);
  const {username, password} = userpass;
  try {
    console.info('proxy-auth with "%s" "%s"', username, password);
    onAuthCallback(username, password);
  } catch (error) {
    console.error('ERROR in `proxy-auth:userpass`:', error);
  }
});

如果有人有任何指示,那就太好了。目前我正在考虑忽略任何第二个请求以快速解决这个问题。

谢谢

4

1 回答 1

0

所以答案是目前 Electron 中存在一个 bug

https://github.com/electron/electron/issues/16010

该错误报告有一些解决问题的建议。

于 2019-09-11T21:06:32.783 回答