Google のおかげで、@keyboardP が彼の回答で参照している投稿のキャッシュ バージョンを見つけました。元のリンクが壊れているため (2012-12-06)、他の人への参照としてその回答/投稿をここに投稿します。
以下の回答が参照する元の質問:
私はフォームベースのアプリケーションを持っていますが、それは私にぴったりです。IsAuthenticated プロパティが True だった場所が、今度は false になり、期待どおりに機能していないことに気付きました。無効な設定があるのだろうか??
IsAuthenticated プロパティを True に設定するもの、つまりログインを構成するものを教えてください。
ダニエル・ケントによる回答:
Request.IsAuthenticated
フォーム認証だけでなく、使用されている認証の種類 (Windows、Passport、フォーム、または独自のカスタム スキーム) に関係なく有効です。
HttpRequest.IsAuthenticated
リクエストを行ったユーザーが認証された場合に true になります。基本的に、このプロパティは と同じ情報を提供しますContext.User.Identity.IsAuthenticated
。
リクエストの開始時に、
ユーザー名が nullContext.User.Idenity
の が含まれます。このオブジェクトのプロパティが返さGenericIdentity
れるので、になります。認証モジュールがイベントを処理し、ユーザーの認証に成功すると、 in
をそのプロパティから返される新しいオブジェクトに置き換えます。戻ります。IsAuthenticated
false
Request.IsAuthenticated
false
Application_AuthenticateRequest
GenericIdentity
Context.User.Identity
IIdentity
true
IsAuthenticated
Request.IsAuthenticated
true
フォーム認証の場合、フォーム認証モジュールは、認証 Cookie に含まれる暗号化された認証チケットを使用してユーザーを認証します。これが完了すると、
GenericIdentity
inContext.User.Identity
をそのプロパティからFormsIdentity
返されるオブジェクトに置き換えます。True
IsAuthenticated
したがって、に設定IsAuthenticated
することtrue
は実際にはログインとは異なります。Jeff が言うように、フォーム認証へのログインは、認証チケットが生成され、Cookie としてクライアントに送信されるときに行われます。(RedirectFromLoginPage
またはSetAuthCookie
) 私たちが話しているの
IsAuthenticated
は、各ページ要求で発生する認証です。ログインは、ユーザーが資格情報を入力してチケットが発行されると発生し、認証はリクエストごとに発生します。