Электрон Webview получить ответ - PullRequest
0 голосов
/ 03 апреля 2019

Я очень плохо знаком с электроном, так что, возможно, я ошибаюсь.

У нас есть несколько веб-приложений, которые все работают, и я хотел попрактиковаться, встроив одно из них в электронное.

Что мне нужно сделать, это загрузить нашу страницу входа в систему единого входа в приложение и затем прослушать файл cookie / сеанс, который будет создан после успешной аутентификации.

Я использую веб-просмотр, например, так:

<div style="width:100%; height:100%">
    <span class="loading loader" id="loading" name="loading"></span>
    <webview class="ssologin" src="https://example.com/resources/ldap.php" autosize="on" style="min-width:755px; min-height:640px"></webview>
</div>

Это загружает страницу входа для ldap / sso. После того, как я войду в систему, обычно вы попадете в веб-приложение, которое вы собирались, прежде чем вы будете перенаправлены в SSO, чтобы не иметь допустимого сеанса.

Я пытаюсь выяснить, как я могу прослушать файл cookie / сеанс, чтобы я знал, что они аутентифицированы, и мы получаем ответ.

По сути, мне нужен этот действительный сеанс для будущих вызовов API в приложении к конечным точкам, поэтому я хочу попробовать использовать эту существующую реализацию аутентификации без необходимости включать другие модули и связываться со всем этим.

Есть предложения?

1 Ответ

0 голосов
/ 03 апреля 2019

На всякий случай, если вы не знали: Electron в настоящее время не рекомендует использовать <webview>:

В настоящее время мы рекомендуем не использовать тег webview и рассмотреть альтернативы, такие как iframe, Electron BrowserView или архитектура, которая полностью исключает встроенный контент.

Ср https://electronjs.org/docs/api/webview-tag#warning

Возможно, вам необходимо установить раздел на вашем <webview>:

<webview src="https://github.com" partition="persist:github"></webview>
<webview src="https://electronjs.org" partition="electron"></webview>

Устанавливает сеанс, используемый страницей. Если раздел начинается с persist:, страница будет использовать постоянный сеанс, доступный для всех страниц приложения с одним и тем же разделом. если префикс persist: отсутствует, страница будет использовать сеанс в памяти. Назначая один и тот же раздел, несколько страниц могут совместно использовать один и тот же сеанс. Если раздел не установлен, будет использоваться сеанс приложения по умолчанию.

Ср https://electronjs.org/docs/api/webview-tag#partition

При этом вы можете (из основного процесса) получить доступ к куки-файлу сессии:

const {session} = require('electron');
const sess = session.fromPartition('persist:foobar');
const cookies = sess.cookies;

Затем вы можете прослушать changed событий для этого объекта cookie:

Издается при изменении файла cookie, поскольку он был добавлен, отредактирован, удален или срок его действия истек.

cookies.on('change', () => {
  // do something when your SSO cookie is set
});

Ср https://electronjs.org/docs/api/cookies#event-changed

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...