Я работаю над приложением action-flux, где я использую sessionStorage, чтобы пользователь вошел в систему, проверяя, доступны ли в sessionStorage адреса электронной почты и аутентификатора. Если они доступны, и время с момента входа в систему составляет менее 15 минут, я запускаю действие потока для входа пользователя в систему. У меня также есть еще одна функция, которая независимо от времени регистрирует пользователя через 15 минут, очищая sessionStorage.Ведение пользователя, входящего в состав приложения для реагирования на поток?
Он отлично работает, пока я не обновляю страницу. На этом этапе функция setInterval, которая регистрирует пользователя через 15 минут, сбрасывается.
Вот код, чтобы понять, что я имею в виду:
В моем родительском компоненте у меня есть следующие функции, которые я называю внутри функции componentDidMount.
checkSession: function() {
if (!_.isNull(window.localStorage)) {
var currentTimeStamp = Date.parse(new Date());
var logInStamp = window.sessionStorage.time;
var difference = currentTimeStamp - logInStamp;
if (Math.floor((difference/1000)/60) < 15) {
var data = {
email: window.sessionStorage.email,
scheduler_slug: window.sessionStorage.slug
};
ActionCreator.loginUser(data);
}
}
},
logOut: function() {
if (this.state.isLoggedIn === true) {
window.sessionStorage.clear();
ActionCreator.logOutUser();
}
},
componentDidMount: function() {
Store.addChangeListener(this._onChange);
this.checkSession();
setInterval(this.logOut, 900000);
}
Я устанавливаю значения ключа для sessionStorage для успеха моего вызова ajax для создания сеанса. В последующих вызовах api я отправляю обратно токен, полученный в ответ от первого вызова в моем заголовке ответа для аутентификации.
Мой вопрос 2 раза:
1) Является ли мой нынешний подход достаточно, чтобы поддерживать сеанс пользователя? Будет ли использование файлов cookie лучше?
2) Если мой текущий подход в порядке, то мне нужно выяснить, как предотвратить сброс таймера на обновление страницы, которое, как я думал, будет легким решением, но все, что я вижу, связано с использованием файлов cookie. Есть ли другой способ?