我的工作,我现在用的sessionStorage保持用户登录通过电子邮件是否与验证令牌中的sessionStorage可检查反应通量应用。如果它们可用并且登录后的时间少于15分钟,我会触发一个助推动作来登录用户。另外,我还有另一个功能,可以在15分钟后通过清除sessionStorage而无需记录用户。保持用户登录,在反应通量应用程序?
它正常工作,直到我刷新页面。此时,15分钟后将用户注销的setInterval函数将自行重置。
下面的代码,使我所提到的意义:
在我父组件,我有以下的功能,我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);
}
我在创建会话的ajax调用成功时设置了sessionStorage的关键值。在随后的api调用中,我将响应中第一次调用收到的令牌发送回我的响应头中进行认证。
我的问题是2倍:
1)是我目前的做法足以维护用户会话?会使用Cookie更好吗?
2)如果我目前的做法是好的,那么我需要找出一种办法,以防止定时器从复位上,我认为将是一个简单的办法,但一切我看到涉及使用cookie刷新页面。有另一种方法吗?