0

それで、私はブランド化FormsAuthentication.SetAuthCookie(model.UserName, true)された行動に電話してリダイレクトします。[Authorize]NowHttpContext.Current.User.Identityは、FormsIdentity私が実際にログインしていることをプロパティから通知されます。すばらしい。

次に、データベースを再構築し、テーブルを削除して再生成します。FormsAuthenticationによって永続化されている名前はもう存在しません。しかし、私が安全なWebサイトを更新すると、愚かなロジックが私に挨拶します:HelloUserName。わかりました...かっこいいです。

FormsAuthenticationは明らかに私のデータストアに関連付けられていません。セッション情報を処理中に保存していますか?または、関連するすべてのデータを認証チケットにエンコードし、クライアントにそれをCookieに保持させますか?

最後に、チケットは私のメンバーシッププラットフォームに関連付けられていますか?それともHttpContext.Current.User.Identity.Name単なる任意の値ですか?

4

2 に答える 2

2

関連するすべてのデータは認証チケットに保存され、クライアント側のCookieに保持されます。また、HttpContext.Current.User.Identity.Nameは別のCookieにも保存されます。[ページ情報の表示]、[セキュリティ]の順にクリックすると、FirefoxでCookieを表示できます。2つのCookieが表示されます。1つは.ASPXAUTH(認証を処理)で、もう1つは.ASPXROLES(メンバーシップを処理)です。

于 2012-07-21T22:51:31.610 に答える
1

デフォルトのフォーム認証構成では、ログインが成功するとCookieがクライアントに送信されます。(Cookieなしのオプションがあります)

「認証後に後続のリクエストを受信するたびに、FormsAuthenticationModuleクラスは認証Cookieから認証チケットを取得し、それを復号化し、ハッシュ値を計算し、MAC値を比較して、Cookieが改ざんされていないことを確認します。」

表示されているのは、リクエストにCookieが含まれていることをFormsAuthenticationModuleが検出していることです。

次のリンクは、今説明したプロセスの非常に詳細な概要です。アクティビティ図は、各リクエストで何が起こるかを理解するために特に重要です。

それがお役に立てば幸いです。

説明:ASP.NET2.0でのフォーム認証

クリス

于 2012-07-22T07:12:28.610 に答える