AJAXを使用してユーザーのセッションの有効期限が切れているかどうかを判断し、ログインページに戻すにはどうすればよいですか?

StackOverflow https://stackoverflow.com/questions/1638171

質問

次のscenaioでは、AJAXを使用してセッションがまだアクティブであるかどうかを確認し、ユーザーをログインページに戻すにはどうすればよいですか?

  1. ユーザーがログインして作業を開始します
  2. ユーザーは10分間消えます セッションがタイムアウトします
  3. ユーザーが自分のコンピューターに戻る そして、彼らはまだ画面上にあります 10分前に
  4. ユーザーは作業を送信しますが、 ログイン画面に戻ります(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.
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top