ວິວ Electron ສາມາດມີບັນຊີ HTTP ພຣັອກຊີແຍກຕ່າງຫາກ
ສ້າງເຊສຊັນສະເພາະບັນຊີສຳລັບແຕ່ລະ WebContentsView ແລະ ຕອບສະເພາະການທ້າທາຍ Basic ຂອງພຣັອກຊີທີ່ກົງກັບວິວນັ້ນ.
ໃນແອັບພລິເຄຊັນ Electron ປັດຈຸບັນ, ໃຫ້ແຕ່ລະ WebContentsView ທີ່ຜູກກັບບັນຊີມີເຊສຊັນທີ່ມີຊື່ຂອງຕົນເອງ. ຫຼັງຈາກແອັບພ້ອມແລ້ວ, ຕົວຊ່ວຍ async ໃນຂະບວນການຫຼັກສາມາດຕັ້ງຄ່າວິວໜຶ່ງໄດ້:
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();
});
ໃຫ້ partitionName ແຍກຕ່າງຫາກສຳລັບແຕ່ລະບັນຊີທີ່ແຍກອອກ ແລະ ເກັບຕົວປ່ຽນຂອງຕົວຮັບຟັງໄວ້ໃນ closure ຂອງວິວນັ້ນ. ຊື່ທີ່ບໍ່ມີ persist: ຈະສ້າງເຊສຊັນໃນຫນ່ວຍຄວາມຈຳ. ການໃຊ້ພາທິຊັນດຽວກັນຄືນໃໝ່ຈະໃຊ້ສະຖານະເຊສຊັນຂອງມັນຄືນໃໝ່ໂດຍເຈຕະນາ.
ຕິດວິວເຂົ້າກັບໜ້າຕ່າງທີ່ມີຢູ່ ແລະ ນຳທາງພຽງແຕ່ຫຼັງຈາກພຣັອກຊີ ແລະ ຕົວຈັດການຂອງມັນພ້ອມແລ້ວ. ໂຄດເລັງໃສ່ສັນຍາການເຫດການ login ປັດຈຸບັນ ລວມທັງ firstAuthAttempt ແລະ ຍົກເລີກການລອງຊ້ຳທີ່ຖືກປະຕິເສດ ແທນທີ່ຈະສົ່ງບັນຊີດຽວກັນຄືນຢ່າງບໍ່ມີຂອບເຂດ.
ຕົວຈັດການກວດສອບວ່າການທ້າທາຍມາຈາກພຣັອກຊີ Basic HTTP ທີ່ຕັ້ງໃຈໄວ້. ການເຂົ້າສູ່ເວັບໄຊບໍ່ມີສິດສຳລັບຂໍ້ມູນເຫຼົ່ານີ້.
ກົດລະບຽບພຣັອກຊີເລືອກຈຸດປາຍທາງ; login ໃຫ້ບັນຊີ. ໄຟລ໌ PAC ແລະ ກົດລະບຽບພຣັອກຊີແບບຕັ້ງດ້ວຍມືບໍ່ໄດ້ຖືລະຫັດຜ່ານຂອງ callback ນີ້ເອງ.
ນີ້ແມ່ນການຢັ້ງຢືນພຣັອກຊີ HTTP. ມັນບໍ່ໄດ້ເພີ່ມການຢັ້ງຢືນ SOCKS5 ໃຫ້ Chromium. ການເຊື່ອມຕໍ່ເຊສຊັນທີ່ມີຢູ່ກໍຕ້ອງການການຈັດການວົງຈອນຊີວິດປົກກະຕິ ເມື່ອເສັ້ນທາງຖືກປ່ຽນໃນພາຍຫຼັງ.