Автоматический выход с сервера 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
};