Обмен файлами cookie и сессиями между Renderer и Main Process в Electron - PullRequest
0 голосов
/ 31 августа 2018

При создании приложения Electron Desktop, которое выполняет базовую аутентификацию для пользователя, мы загружаем BrowswerWindow и загружаем форму для входа. Эта форма, когда она отправлена, выполняет POST to URL для аутентификации и авторизации пользователя для получения более привилегированной информации. Если аутентификация прошла успешно, сеанс пользователя устанавливается таким образом, чтобы в будущих запросах в BrowserWindow использовался аутентифицированный сеанс пользователя.

Однако я не видел случая, когда сеанс в процессе рендеринга (BrowserWindow) мог быть сохранен в главном процессе, поэтому, если основной процесс должен сделать запрос, он может использовать тот же сеанс с проверкой подлинности. Как я могу позволить основному процессу совместно использовать сеанс и файлы cookie, которые процесс Renderer использовал для любых запросов, которые он должен сделать?

TL; DR: пользователь успешно входит в BrowserWindow в Electron. Как сделать запросы в основном процессе после аутентификации пользователя, с тем же сеансом, что и сеанс в BrowserWindow?

Ответы [ 2 ]

0 голосов
/ 04 сентября 2018

В процессе рендеринга Electron используется конвейер запросов Chromium. Основной процесс Electron использует конвейер запросов node.js.

Помимо проблемы, которую вы поднимаете с помощью файлов cookie / сессий, HTTPS-запросы node.js из основного процесса не будут работать в корпоративных сетях, где в хранилище сертификатов Windows установлен специальный корневой сертификат.

Самый простой способ обойти это - выполнить все ваши запросы через процесс рендеринга. electron-remote имеет некоторый код, чтобы упростить это:

import { requireTaskPool } from 'electron-remote';

const remoteAjax = requireTaskPool(require.resolve('electron-remote/remote-ajax'));

// Result is the object that XmlHttpRequest gives you
let result = await remoteAjax.get('https://httpbin.org/get');
console.log(result.url)

>>> 'https://httpbin.org/get'
0 голосов
/ 31 августа 2018

Вы пробовали это: сессий Вы можете обмениваться данными между browserWindow и main.js с помощью модуля IPC: Учебное пособие по IPC

...