1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/dromara-electron-egg

 / Детали:

Для обеспечения безопасности следует включить контекстное ограничение и отключить модули node. Также...

Предстоит сделать
Владелец
Создано  
23.04.2025

необходимо настроить предзагрузку (preload) скриптов. Из-за того, что байт-код зашифрован и файлы имеют расширение jsc, рендерный слой не может загрузить соответствующие файлы js.

Для обеспечения безопасности включаем изоляцию контекста и отключаем интеграцию с модулями Node.js, а также включаем предзагрузку (preload) скриптов. Из-за шифрования байт-кода файлы имеют расширение .jsc, что приводит к проблемам с загрузкой соответствующих файлов .js в рендеринге.

    // Основное окно
    config.windowsOption = {
        title: appConfig.company,
        width: 1400,
        height: 900,
        minWidth: 1400,
        minHeight: 900,
        webPreferences: {
            // webSecurity: false, // Проблемы с кросс-доменными запросами -> раскомментировать
            contextIsolation: true, // true -> требуется bridge.js (contextBridge)
            nodeIntegration: false, // Отключение интеграции с модулями Node.js
            sandbox: true, // Включение режима песочницы
            preload: path.join(getPreloadBridgePath(), 'main.js')
        },
        frame: true,
        show: false,
        icon: path.join(appInfo.home, 'public', 'images', 'logo-32.png')
    }

Путь к предзагрузочному скрипту:

  • В режиме разработки: проект\electron\preload\bridge\main.js
  • После шифрования байт-кода: путь к установке\resources\app.asar\public\electron\preload\bridge\main.jsc
  • Путь к загрузке рендерингом: путь к установке\resources\app.asar\public\electron\preload\bridge\main.js
    Это приводит к проблемам с загрузкой соответствующих файлов .js, что препятствует коммуникации между основным процессом и рендерингом.

**Вопрос: есть ли способ исключить определенные файлы из шифрования с помощью конфигурации encrypt, или есть другие решения?**В настоящее время конфигурация encrypt.files включает !electron/preload/bridge/*.(js|json) после шифрования и сборки, папка electron/preload/bridge отсутствует.

Мои текущие решения:

  1. Добавить конфигурацию в encrypt.files
    files: [
        '!electron/preload/bridge/*.(js|json)'
    ],
  1. Добавить конфигурацию в extraResources в builder.json
    "extraResources": [
        {
            "from": "electron/preload/bridge/",
            "to": "preload/bridge/"
        }
    ],
  1. Написать метод для обработки пути
    function getPreloadBridgePath() {
        const isDebug = getIsDebug()
        if (isDebug) {
            return path.join(electronApp.getAppPath(), 'electron', 'preload', 'bridge')
        } else {
            return path.join(electronApp.getAppPath(), '..', 'preload', 'bridge')
        }
    }

Комментарий (0)

GitLife Service Account Задача создана

Вход Перед тем как оставить комментарий

Статус
Ответственный
Контрольная точка
Pull Requests
Связанные запросы на слияние могут быть закрыты после их объединения
Ветки
Дата начала   -   Крайний срок
-
Закрепить/Открепить
Приоритет
Участники(1)
1
https://api.gitlife.ru/oschina-mirror/dromara-electron-egg.git
git@api.gitlife.ru:oschina-mirror/dromara-electron-egg.git
oschina-mirror
dromara-electron-egg
dromara-electron-egg