Request.IsAuthenticated はどのように機能しますか?
-
18-09-2019 - |
質問
MSDN コードサンプルの説明:次のコード例では、IsAuthenticated プロパティを使用して、現在の要求が認証されているかどうかを判断します。認証されていない場合、要求は別のページにリダイレクトされ、ユーザーはそこで資格情報を Web アプリケーションに入力できます。これは、アプリケーションのデフォルト ページで使用される一般的な手法です。
これは素晴らしいですが、詳細も何もありません...
いったい何をチェックしているのでしょうか?どうすれば true に設定できますか?
期待された以上の仕事をする:これに関する詳細なドキュメントはどこにありますか?
解決
Google のおかげで、@keyboardP が参照している投稿のキャッシュされたバージョンを見つけました。 彼の答え. 。元のリンクが壊れているため(2012-12-06)、他の人への参考としてその回答/投稿をここに投稿します。
元の質問 以下の回答は次のことを指します。
フォームベースのアプリケーションを使用しているので、フィット感が生じます。私は、isAuthenticatedプロパティが真実である場所で、それは今では虚偽であり、予想どおりに機能していなかったことに気付きました。無効な設定があるのだろうか?
誰もが私に、ISAuthenticatedプロパティをTrueに設定するものを教えてもらえますか?
ダニエル・ケントの答え:
Request.IsAuthenticated
フォームの認証だけではありません - それはどのタイプの認証が使用されていても有効です(Windows、パスポート、フォーム、または独自のカスタムスキーム)
HttpRequest.IsAuthenticated
リクエストを作成するユーザーが認証されている場合に当てはまります。基本的に、このプロパティは同じ情報を提供します Context.User.Identity.IsAuthenticated
.
リクエストの開始時に、 Context.User.Idenity
が含まれています GenericIdentity
ユーザー名が null の場合。の IsAuthenticated
このオブジェクトのプロパティが返されます false
それで Request.IsAuthenticated
になるだろう false
. 。認証モジュールが処理するとき Application_AuthenticateRequest
イベントと成功は、それが置き換えるユーザーを認証します GenericIdentity
でContext.User.Identity
新しいもので IIdentity
返されるオブジェクト true
それから IsAuthenticated
財産。 Request.IsAuthenticated
その後戻ります true
.
フォーム認証の場合、フォーム認証モジュールは、認証Cookieに含まれる暗号化された認証チケットを使用してユーザーを認証します。これが完了すると、GenericIdentity
で Context.User.Identity
とともに FormsIdentity
返すオブジェクト True
そのから IsAuthenticated
財産。
そこで、設定 IsAuthenticated
に true
実際にはログインとは異なります。Jeffが言うように、認証チケットが生成され、Cookieとしてクライアントに送信されたときに認証が発生するようにログインします。(RedirectFromLoginPage
または SetAuthCookie
) 私たちが話していることIsAuthenticated
各ページリクエストで行われる認証です。ログインは、ユーザーが資格情報を入力し、チケットを発行されたときに発生します。各リクエストで認証が発生します。
他のヒント
ここのダニエル・ケントすることにより、非常に詳細な記事があります。 (抜粋)
Request.IsAuthenticatedです フォームauthentciationのためだけではなく - それは どのタイプの関係なく有効ではありません 認証は、Windowsの(使用されています パスポート、フォームまたは当社独自のカスタム スキーム)
HttpRequest.IsAuthenticatedになります 真のときに、ユーザーが要求を行います 認証されています。基本的に、 このプロパティは、同じ提供します などの情報 Context.User.Identity.IsAuthenticatedます。