2011-07-06 8 views
0

I次の問題があります。ASP.NET AJAXログインの検証...ページの読み込みをキャンセルしますか?

私のweb.configファイルで

I次の権限の設定があります。

<authentication mode="Forms"> 
    <forms loginUrl="~/LogIn" timeout="2880" name=".ASPXFORMSAUTH" defaultUrl="~/Dashboard/Dashboard.aspx"/> 
</authentication> 

私がログインした後、以前の開発ストアからセッションにユーザオブジェクトを継承したコード私はをこの論理を今も引き続き使用することを計画しています。

ここで、ユーザーがページに移動します。 Cookieはログイン時に作成され、ユーザー情報はSessionに保存されます。ユーザーはページのタブを閉じますが、ブラウザは開いたままにします。ユーザーは、Sessionが期限切れになったx時間を待ちますが、クッキーは終了しません。ユーザは、直前のページに直接移動しようとする。フォーム認証はログインしていると思っていますが、そうではありません。そのため、ログインしているユーザーはnullです。

私はこれを行うにしようとしています:

protected void Page_Init(object sender, EventArgs e) 
{ 
    if (object.Equals(DashboardSessionRepository.Instance.LoggedInUser, null)) 
    { 
     FormsAuthentication.SignOut(); 
     FormsAuthentication.RedirectToLoginPage(); 
    } 
    else 
    { 
     //Continue with page init 
    } 
} 

残念ながら、これは、現在のページがそのライフサイクルをキャンセルすることはありません。

私はいくつかのことを疑問に思って:

  • このシナリオでは、適切分野でどのように扱われますか?
  • 正しい解決策ではない場合、これは許容可能な解決策ですか?
  • ページライフサイクルイベントの残りの部分でLoggedInUserがnullであるかどうかを確認する必要がない方法がありますか?(ページロード、ページロードコンプリート) AutoWireEventsをfalseに設定することができますが、自分のライフサイクルを配線することはもっと間違っているようです。

おかげ

答えて

1

は残念ながら、これは現在のページがそのライフサイクルをキャンセルすることはありません。

あなただけの終了を置くライフサイクルを停止したい場合は、その

if (object.Equals(DashboardSessionRepository.Instance.LoggedInUser, null)) 
{ 
    FormsAuthentication.SignOut(); 
    FormsAuthentication.RedirectToLoginPage(); 
    Response.End(); 
    return; 
} 
else 
としてRedirectToLoginPage ...後
関連する問題