私はウェブサイトにログイン/ログアウト機能を実装しています。ユーザーがSign out
ボタンの上に(どこかが、ログインページ、Login.aspx
で)クリックするたびに、以下の方法が実行されます:Response.Redirectの後にセッションタイムアウトを検出しますか?
protected void SignOut(object sender, EventArgs e)
{
Session.Abandon();
Response.Redirect("Login.aspx");
}
を今、リダイレクトが発生したとき、私はLogin.aspx
で次の操作を行いたい:
protected void Page_Init(object sender, EventArgs e)
{
if (Session_has_timed_out ...)
SessionTimeOutDIV.Text = "Session timed out. Please log in again.";
else
{
// normal logic here ...
}
}
Q:はどのように私はSession.Abandon()
への実際の呼び出し後にセッションが以前に私は(1)これをチェックする必要があることを考えると、終了したことを確認しないと、(2)私はSession.Abandon()
への呼び出しが持っていたところからリダイレクトしていた後、起こりました?
'Session.Abandon()'は 'session_end'イベントを発生させます。 Yoは何かをそこに置くことができます。また、放棄イベント後、すべてのセッション変数はnullになりますので、確認することができます。それはあなたが探しているものですか? –
@Ravi A.正しく理解すれば、 'Session.Abandon()'はすべてのセッション変数を破壊します。技術的には、電話などの間に違いはありません。 'Session ['username']' ** **セッションが作成されて** ** **放棄される前に - どちらの場合も 'null'が返されます。これは問題です。なぜなら、 'Page_Init'で' Session ['username'] 'をチェックするだけで、ページが開始されるたびに条件は' true'に解決されるからです。セッションが**終了したとき(つまり、ユーザーがログアウトしたとき)はいつでも、それが真実である必要があります。 – Alex