Автоматический выход с сервера simple-ember-auth/oauth2 после неактивности

Я реализовал простой-ember-auth на передней панели и oauth2-сервер на задней панели, используя права доступа паролей и refresh_token. Когда срок действия маркера авторизации истекает (это время установлено на сервере), simple-ember-auth отправляет запрос на обновление токена и получает новый токен авторизации.

Это круто, однако мне нужно автоматически аннулировать сеанс после определенного времени бездействия. В настоящее время OAuth2PasswordGrantAuthenticator, по-видимому, выдает запрос на обновление токена до бесконечности.

Буду признателен за любые предложения или мысли, как это реализовать.

1 ответ

Как упомянуто в комментарии @Lux, вы должны реализовать обнаружение активности пользователя. Вы можете наблюдать такие события, как keypress, mousemove, scroll и т. д. на window элемент поэтому. Если речь идет не об активности, а о том, что страница находится в фокусе, вы можете рассмотреть страницу Visibilty Api. Если это больше о взаимодействии с вашим приложением, возможно, наблюдайте за вечными событиями, такими как переходы.

использование Ember.debounce вызвать OAuth2PasswordGrantAuthenticator invalidate() метод, только если не было никакой активности пользователя.

Может быть, лучше всего реализовать в инициализаторах экземпляра приложения.

Примерно так (не проверено):

// app/instance-initializers/logout-if-inactive.js
export function initialize(applicationInstance) {
  var session = applicationInstance.lookup('service:session');
  var logoutAfter = 15 * 60 * 1000 // in milliseconds
  var logout = function() {
    Ember.run.debounce(session, 'invalidate', logoutAfter);
  }
  window.onmouseevent = logout;
  window.onkeypress = logout;
}

export default {
  name: 'logout-if-inactive',
  after: 'session',
  initialize: initialize
};
Другие вопросы по тегам