私のサイトのユーザーログインとログアウトをトラッキングできるようにします。asp.net:FormsAuthentication.SignOut()は認証クッキーをクリアしません
私はそのためにhttpモジュールを作成しました。
私はログインに問題はありません。ログアウトは、しかし、私は問題を抱えています。
私の最初の考えは、Application_EndRequestハンドラ内のクッキーの破壊をチェックすることでした。 FormsAuthentication.SignOut()を呼び出した後、要求Cookieコレクションに依然として認証Cookieが含まれているため、これは問題ありません。
// In Application_EndRequest
if (httpRequest.IsAuthenticated)
{
HttpCookie authCookie = httpRequest.Cookies[FormsAuthentication.FormsCookieName];
// Doesn't work. "authCookie" is always non-empty
if (authCookie == null || authCookie.Value == "")
{
//logout detected
}
}
else
{
HttpCookie authCookie = httpRequest.Cookies[FormsAuthentication.FormsCookieName];
if (authCookie != null)
{
//login detected
}
}
これが適切な方法でない場合は、教えてください。
はい、どちらも同じリクエスト内の両方を呼び出します。 別のリクエストでCookieを確認することをお勧めします。しかし、クッキーは常にnullではありませんか?ヌルクッキーは必ずしもログアウトを意味しません。匿名ユーザーには、たとえばクッキーはありません。 – Linas
'別のリクエストでクッキーをチェックすることを提案しています。 '***はい。***はクッキーが常にヌルではないでしょうか?クライアントコンピュータ内のクッキーは、一度設定されると直接削除できません。ただし、有効期限は過去の日付に設定することができ、無効になります。その後、ブラウザは期限切れのクッキーを後でクリーンアップします。 'FormsAuthentication.SignOut()'を呼び出すだけで十分です。私はクッキーが削除されているかどうか心配しません。 – Win