MSDNコードサンプルの説明:次のコード例では、IsAuthenticatedプロパティを使用して、現在の要求が認証されているかどうかを判断します。認証されていない場合、要求はユーザーがWebアプリケーションに資格情報を入力できる別のページにリダイレクトされます。これは、アプリケーションのデフォルトページで使用される一般的な手法です。
これは素晴らしいですが、詳細など何もありません...
正確に何をチェックしていますか? trueに設定するにはどうすればよいですか?
さらに進んでください:これに関する詳細なドキュメントはどこにありますか?
Googleのおかげで、@-keyboardPが his answer で参照する投稿のキャッシュバージョンが見つかりました。元のリンクが壊れているため(2012-12-06)、他の人への参照としてここにその回答/投稿を投稿しています。
元の質問 以下の回答が参照するもの:
フォームベースのアプリケーションを使用しています。 IsAuthenticatedプロパティがTrueだった場所で、Falseになり、期待どおりに動作しなかったことに気付きました。無効な設定がありますか?
IsAuthenticatedプロパティをTrueに設定するもの、つまりログインする構成を教えてください。
ダニエル・ケントによる回答:
Request.IsAuthenticated
はフォーム認証専用ではありません-使用されている認証の種類(Windows、Passport、Forms、または独自のカスタムスキーム)に関係なく有効です
HttpRequest.IsAuthenticated
は、リクエストを行うユーザーが認証された場合にtrueになります。基本的に、このプロパティはContext.User.Identity.IsAuthenticated
と同じ情報を提供します。
リクエストの開始時に、Context.User.Idenity
には、ユーザー名がnullのGenericIdentity
が含まれます。このオブジェクトのIsAuthenticated
プロパティはfalse
を返すため、Request.IsAuthenticated
はfalse
になります。認証モジュールがApplication_AuthenticateRequest
イベントを処理し、ユーザーを正常に認証すると、Context.User.Identity
内のGenericIdentity
が、IIdentity
を返す新しいtrue
オブジェクトに置き換えられます。 IsAuthenticated
プロパティ。 Request.IsAuthenticated
はtrue
を返します。
フォーム認証の場合、フォーム認証モジュールは認証Cookieに含まれる暗号化された認証チケットを使用してユーザーを認証します。これを実行すると、Context.User.Identity
のGenericIdentity
を、FormsIdentity
プロパティからTrue
を返すIsAuthenticated
オブジェクトに置き換えます。
したがって、IsAuthenticated
をtrue
に設定することは実際にはログインとは異なります。ジェフが言うように、フォーム認証へのログインは、認証チケットが生成され、Cookieとしてクライアントに送信されるときに発生します。 (RedirectFromLoginPage
またはSetAuthCookie
)IsAuthenticated
で話しているのは、各ページ要求で発生する認証です。ユーザーが資格情報を入力してチケットを発行すると、ログインが行われ、リクエストごとに認証が行われます。
ダニエル・ケントによる非常に詳細な投稿があります ここ 。 (スニペット)
Request.IsAuthenticatedはフォーム認証だけではありません-使用されている認証の種類(Windows、Passport、Forms、または独自のカスタムスキーム)に関係なく有効です
HttpRequest.IsAuthenticatedは、リクエストを行っているユーザーが認証されたときにtrueになります。基本的に、このプロパティはContext.User.Identity.IsAuthenticatedと同じ情報を提供します。