Dabartinėse Electron programose kiekvienam su paskyra susietam WebContentsView suteikite savo vardinę sesiją. Kai programa paruošta, asinchroninis pagalbininkas pagrindiniame procese gali sukonfigūruoti vieną rodinį:

const routeSession = session.fromPartition(partitionName);
await routeSession.setProxy({
  mode: 'fixed_servers',
  proxyRules: `http://${proxyHost}:${proxyPort}`,
});
const view = new WebContentsView({
  webPreferences: { session: routeSession },
});
view.webContents.on('login', (event, details, authInfo, callback) => {
  if (!authInfo.isProxy
      || authInfo.scheme.toLowerCase() !== 'basic'
      || authInfo.host !== proxyHost
      || authInfo.port !== proxyPort) return;
  event.preventDefault();
  if (details.firstAuthAttempt) callback(proxyUser, proxyPassword);
  else callback();
});

Kiekvienai izoliuotai paskyrai nurodykite atskirą partitionName ir laikykite klausytojo kintamuosius to rodinio uždaryme. Pavadinimas be persist: sukuria sesiją atmintyje. Tos pačios skaidinio pakartotinis naudojimas sąmoningai naudoja jo sesijos būseną.

Prikabinkite rodinį prie esamo lango ir naršykite tik tada, kai jo tarpinis serveris ir apdorotuvas paruošti. Kodas atitinka dabartinę login įvykio sutartį, įskaitant firstAuthAttempt, ir atšaukia atmestą pakartotinį bandymą, o ne be galo siunčia tą pačią paskyrą iš naujo.

Apdorotuvas patikrina, ar iššūkis gaunamas iš numatyto Basic HTTP tarpinio serverio. Svetainės prisijungimas šiems duomenims netinka.

Tarpinio serverio taisyklės parenka galinį tašką; login pateikia paskyrą. PAC failai ir rankinės tarpinio serverio taisyklės patys neperneša šio callback slaptažodžio.

Tai HTTP tarpinio serverio autentifikavimas. Jis neprideda SOCKS5 autentifikavimo prie Chromium. Esami sesijos ryšiai taip pat reikalauja įprasto gyvavimo ciklo valdymo, kai maršrutas vėliau pakeičiamas.

Susiję straipsniai