AJAXを使用してユーザーのセッションの有効期限が切れているかどうかを判断し、ログインページに戻すにはどうすればよいですか?
-
08-07-2019 - |
質問
次のscenaioでは、AJAXを使用してセッションがまだアクティブであるかどうかを確認し、ユーザーをログインページに戻すにはどうすればよいですか?
- ユーザーがログインして作業を開始します
- ユーザーは10分間消えます セッションがタイムアウトします
- ユーザーが自分のコンピューターに戻る そして、彼らはまだ画面上にあります 10分前に
- ユーザーは作業を送信しますが、 ログイン画面に戻ります(by 既存のセッション状態チェック)および 変更は保持されません
理想は、1分ごとにセッション状態をチェックして、ユーザーがアイドル状態かどうかを確認する方法です。セッションが期限切れになり、セッションが期限切れになりそうな場合、変更を一時的に保存してから、セッションが期限切れになると、ユーザーがアイドル状態から戻る前にページをログイン画面に自動的に変更します。
setTimeOut()を使用せずにこれを行うことも可能ですか?
解決
これがサーバー側で処理できる場合のほとんど。
サーバー側のユーザーアクティビティがあるときはいつでも-ページの読み込み、ajax呼び出し、その他、セッション変数の設定
Session["last_activty"]=DateTime.Now;
AJAX呼び出しとページの読み込み(認証を必要とするページのマスターページ/ネストされたマスターページでこれを行うことができます)で、(擬似コード)を確認します
if (DateTime.Now-DateTime.Parse(Session["last_activity"]) > 10 minutes)
Session["logged_in"]=false;
ページの読み込みまたはwebmethod / webserviceメソッドが上記に基づいてユーザーがタイムアウトしたと判断した場合、
a)ログインページ(サーバー側)へのリダイレクト、または
b)ajaxの呼び出し元にステータスコードを返すと、リダイレクトまたはログインダイアログが表示されます。
注:クラスタ化されたサーバー環境ではうまく機能しない/まったく機能しない傾向があるため、実際のセッション変数の使用に注意してください。このタイプのもののより良い場所は、データベースです。
table Users
.ID
.last_activity datetime
.logged_in - calculated column which returns if GetDate()-LastActivity > 10 minutes.
所属していません StackOverflow