Модуль для ответа на постоянные пользователи в угловых приложениях. Это переписывание модуля NG-IDLE; Однако, если вы используете Angular 1, вы должны использовать этот модуль.
Угловое сообщество нуждается в вас! Я ищу нового разработчика или команды, чтобы взять на себя обслуживание этого модуля. Это обязанности, которые должны учитывать любые заинтересованные кандидаты:
В идеале кандидат:
Пожалуйста, свяжитесь с нами, если вы заинтересованы!
Посетите https://grbsk.github.io/ng2-idle, чтобы просмотреть простой пример с инструкциями быстрого запуска.
@ng-idle поставляется через NPM. Вы можете установить пакет, используя следующую команду для последней поддерживаемой версии Angular:
npm install --save @ng-idle/core
Интеракция и настройка пакета в ваше приложение требует еще нескольких шагов. Пожалуйста, посетите @ng-idle-example для источника и инструкции о том, как начать.
Основное применение этого модуля состоит в том, чтобы обнаружить, когда пользователи простаивают. Он также может быть использован для предупреждения пользователей о предстоящем тайм -ауте, а затем время от времени. Ядром этого модуля является служба Idle , которая делает все возможное, основываясь на вашей конфигурации - для обнаружения, когда пользователь активен или простаивает, и передавать эту информацию в ваше приложение, чтобы он мог ответить соответствующим образом.
Основные функции можно найти в пакете @ng-idle/core через NPM.
Дополнительные модули для расширения функциональности:
@ng-idle/keepalive (см. Ниже) В общем случае использования, когда он используется для управления сеансом, вам может придется периодически сигнализировать на сервер, что пользователь все еще вошел в систему и активен. Если вам нужна эта функциональность, @ng-idle может опционально интегрироваться с @ng-idle/keepalive . @ng-idle будет обучать @ng-idle/keepalive ping, пока пользователь активен, и остановится, как только они пойдут на холост или время. Когда пользователь возобновит деятельность или состояние холостого хода, сбросится, он немедленно пингует, а затем возобновит пинг. Обратите внимание , что интеграция KeepAlive является необязательной, и вы должны установить и настроить @ng-idle/keepalive отдельно, чтобы получить эту функциональность. Вы можете реализовать свой собственный, расширяя KeepaliveSvc и настройку его в качестве поставщика в вашем приложении для класса KeepaliveSvc .
Прерывание - это любой источник ввода (обычно от пользователя, но может быть такими вещами, как другие вкладки или событие), которые можно использовать для сигнала на Idle , чтобы часы на холостое время должны быть прерваны или сброшены. В отличие от ng-idle , эти источники не являются жесткими кодировками; Вы можете расширить InterruptSource или любой из встроенных источников в соответствии с вашими целями. Эта функция также полезна для обработки входного шума, который может извлечь ваш конкретный случай использования. Его также можно использовать для нацеливания на определенные элементы на странице, а не на весь документ или окно. Следующие источники встроены в этот пакет:
InterruptSource (Abstract): базовый тип, который вы можете реализовать, чтобы сделать свой собственный источник.EventTargetInterruptSource : любой объект, который реализует EventTarget , такой как HTMLElement или Window . Принимает объект, который является источником, и строка с разграниченной космической точкой, содержащей события, которые вызывают прерывание.DocumentInterruptSource : ищет события (в строке с разделиться с пространством), которые поднимаются html document.documentElement .WindowInterruptSource : Ищет события (в космической строке), которые пузыряются к Window .StorageInterruptSource : выглядит только для события Storage Window объекта. Обязательно для LocalStorageExpiry . ПРИМЕЧАНИЕ . Вы должны настроить источник (ы) самостоятельно при инициализации приложения. По умолчанию, прерывания не настроены. Вы можете использовать конфигурацию, аналогичную ng-idle по умолчанию, импортируя DEFAULT_INTERRUPTSOURCES и передавая эту ссылку на Idle.setInterrupts(DEFAULT_INTERRUPTSOURCES); Полем
Другая функция, переносимая из ng-idle -это возможность сохранить значение истечения срока действия в некотором магазине, где могут записать несколько вкладок или Windows, запускающих одно и то же приложение. Как правило, этот магазин является localStorage , но может быть куки или все, что вы хотите. Цель этого истечения и истечения срока действия составляет два раза: во -первых, чтобы окно не вышло, если оно спит или останавливается дольше, чем настроенный период времени ожидания. Во -вторых, его можно использовать так, чтобы активность в одной вкладке или окне предотвращала другие вкладки или окна в одном и том же приложении от времени.
По умолчанию предоставляется LocalStorageExpiry , который просто будет отслеживать истечение срока действия в LocalStorage. Он выполнит все, упомянутые выше. Если вы не хотите поддерживать несколько вкладок или окон, вы можете использовать SimpleExpiry . Другими словами, SimpleExpiry не координирует последнюю деятельность между вкладками или окнами. Если вы хотите сохранить значение истечения срока действия в другом магазине, например, файлы cookie, вам нужно использовать или создать реализацию, которая поддерживает это. Вы можете создать свой собственный, расширяя IdleExpiry или SimpleExpiry и настройка его в качестве поставщика для класса IdleExpiry .
Инжектор зависимости в угловом поддерживает стратегию иерархической инъекции. Это позволяет вам создавать экземпляр Idle в любой области, который вам нужен, и может быть более одного экземпляра. Это позволяет вам иметь два отдельных часа, например, на двух разных элементах на странице.
Если вы используете истечение срока по умолчанию ( LocalStorageExpiry ), вам нужно будет определить имя для каждого холостого хода с помощью Idle.setIdleName('yourIdleName') , в противном случае тот же ключ будет использоваться в LocalStorage, и эта функция не будет работать, как и ожидалось.
Например, рассмотрим приложение по электронной почте. Для повышения безопасности приложение может пожелать определить, когда пользователь неактивен, и вывести их из них, предоставив им возможность расширить свой сеанс, если он все еще находится на компьютере, и просто отвлекались. Кроме того, для еще лучшей безопасности сервер может выдать сеанс пользователя токеном безопасности, который истекает через 5 минут бездействия. Пользователь может занять гораздо больше времени, чем это, чтобы набрать свою электронную почту и отправить его. Было бы разочаровывает, что вы выходили из строя, когда вы активно используете программное обеспечение!
@ng-idle/core может обнаружить, что пользователь щелкает, набирает, касается, прокрутка и т. Д. И знает, что пользователь все еще активен. Он может работать с @ng-idle/keepalive , чтобы каждые несколько минут пинг на сервер, чтобы держать их в системе.
@NG-IDLE/CORE использует события DOM в различных целях для обнаружения активности пользователя. Однако при использовании рендеринга SSR/Universal, приложение не всегда работает в браузере и, следовательно, может не иметь доступа к этим целям DOM, в результате чего ваше приложение может потенциально сбое или ошибки, когда оно пытается использовать глобальные браузеры, такие как document и window через @ng-idle.
EventTargetInterruptSource и все источники прерываний, которые вытекают из него (например, DocumentInterruptSource , WindowInterruptSource и StorageInterruptSource ) предназначены для лениво инициализации целевых слушателей событий для совместимости с рендерингом на стороне сервера. EventTargetInterruptSource обнаружит, работает ли ваше приложение в браузере или на сервере, используя isPlatformServer , и пропустит инициализацию целевых слушателей событий при запуске на сервере.
Этот проект был разработан с использованием версии Nodejs, найденной в файле .nvmrc . Вы можете испытывать проблемы с использованием более старых версий. Попробуйте одновременно управлять различными версиями узла. При использовании NVM вы можете выполнить nvm install для загрузки и переключения на правильную версию.
Как только вы клонируете репозиторий, установите все пакеты, используя npm :
npm install
Теперь вы можете построить и запускать все тесты один раз с покрытием.
npm test
Вы также можете непрерывно запускать тесты, пока вносите изменения в проект, выполнив npm run ng test <project name> или ng test <project name> Если у вас установлен @angular/cli .
npm run ng test core
...
npm run ng test keepalive
Примечание: KeepAlive зависит от ядра. Если вы выполняете вышеуказанные непрерывные тесты, вам нужно сначала npm run ng build core npm build или NPM, и после внесения изменений в Core. Тем не менее, npm test создаст все модули и запускает тесты за один выстрел.
См. Руководство по содействию.