Electron-näkymillä voi olla erilliset HTTP-välityspalvelintilit
Luo kussakin WebContentsView'ssä tiliikohtainen istunto ja vastaa vain kyseisen näkymän vastaavaan Basic-välityspalvelinhaasteeseen.
Nykyisissä Electron-sovelluksissa anna jokaiselle tilikohtaiselle WebContentsView'lle oma nimetty istuntonsa. Kun sovellus on valmis, pääprosessin asynkroninen apuri voi määrittää yhden näkymän:
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();
});
Anna jokaiselle eristetylle tilille erillinen partitionName ja pidä kuuntelijamuuttujat kyseisen näkymän sulkeumassa. Nimi ilman persist:-osaa luo istunnon muistiin. Saman osion uudelleenkäyttö käyttää tarkoituksella uudelleen sen istuntotilaa.
Liitä näkymä olemassa olevaan ikkunaan ja siirry vasta, kun sen välityspalvelin ja käsittelijä ovat valmiina. Koodi noudattaa nykyistä login-tapahtuman sopimusta, mukaan lukien firstAuthAttempt, ja peruuttaa hylätyn toistoyrityksen sen sijaan, että lähettäisi saman tilin uudelleen loputtomasti.
Käsittelijä tarkistaa, että haaste tulee aiotusta Basic HTTP -välityspalvelimesta. Verkkosivuston kirjautuminen ei kelpaa näille tunnuksille.
Välityspalvelinsäännöt valitsevat päätepisteen; login toimittaa tilin. PAC-tiedostot ja manuaaliset välityspalvelinsäännöt eivät itsessään kanna tämän callbackin salasanaa.
Tämä on HTTP-välityspalvelimen todennus. Se ei lisää SOCKS5-todennusta Chromiumiin. Nykyiset istuntoyhteydet tarvitsevat myös tavanomaisen elinkaarensa käsittelyn, kun reitti myöhemmin muuttuu.