2016-12-05 12 views
0

私はユーザー認証済みトークンのセキュリティを確保しようとしています。私は、セッションの有効期限を設定するためにセッションストレージを使用し、JavaScriptクライエントが認証トークンを格納するためにアクセスできないサーバサイドのクッキーを使用します。現時点では、ユーザーが新しいタブを開くと、トークンクッキーがまだ存在していても、sessionStorageに有効期限がないためログインしません。私はそのような有効期限をsessionStorageからlocalStorageに移動して、新しいタブを開いたときにユーザーがログインしているように思っていますが、私のWebサイトにアクティブなタブがない場合はlocalStorageエントリを削除します。これはチェックすることが可能ですか?同じURLのアクティブなタブが開いていない場合はlocalStorageを破棄します

+0

なぜサーバーセッションを使用しないのですか?彼らは簡単にこの問題を解決します。セッションが有効なすべてのウィンドウを閉じるまで – Viney

答えて

1

有効期限を現在の時刻+ xに設定できます(xが短い場合は、1分とします)。 次に、タブがアクティブな間にそれを拡張するためにsetInterval呼び出しを記述します。次のようなもの:

var expiration = new Date(); 
expiration.setMinutes(expiration.getMinutes() + 1); 
window.localStorage.setItem('MyTokenExpiration', JSON.stringify(expiration)); 

window.setInterval(function() { 
    var now = new Date(); 
    var tokenExpiration = new Date(JSON.parse(window.localStorage.getItem('MyTokenExpiration'))); 
    if(tokenExpiration.getSeconds() < now.getSeconds() + 30) { 
     tokenExpiration.setMinutes(now.getMinutes() + 1); 
     window.localStorage.setItem('MyTokenExpiration', JSON.stringify(tokenExpiration)); 
    } 
}, 30000); 
関連する問題