2009-08-26 5 views
10

私はむしろ混乱しています、asp.netのFormsAuthentication.SetAuthCookie()はセッションベースのクッキーを作成するかどうかですか?私はセッションで何かを置くために集まる何が背後にあるコードでこのような何かをするだろうから:かかわらず、クッキーは、これはそのサーバ側として動作します作成されているかどうかの今FormsAuthentication.SetAuthCookie()はセッションベースのCookieを作成しますか?

Session["userAge"] = 25; 

ので、私は混乱していますセッションとセッションレスのクッキーを読むことができたら、それぞれをどのように作成するのですか?そして、どのようにして.netのクッキー内のエッセンス変数にアクセスしますか?

答えて

21

これはよくある混乱です。セッションとFormsAuthenticationは独立したタイムアウトと独立したクッキーを持っています(クッキーレスセッションを使用している場合はクッキーがありません)。

サーバー上のセッションは、匿名ユーザーに対しても作成される一意のクッキーによって識別されます。このCookieは、FormsAuthenticationとは何の関係もないSessionIDを保持します。

FormsAuthentication Cookieには多くのものが含まれていますが、最も重要なのは認証チケットです。このチケットは、提供されたログイン資格情報に対してユーザーを識別する情報の暗号化されたビットです。チケットに含まれるものの詳細なフローチャートと説明はin this MSDN articleです。

+0

多くのことが説明されていますが、MSDNの記事から分かりませんが、セッションベースのクッキーとセッションレスのクッキーを使用すると、なぜ人々が意味するのですか?セッションはサーバーサイドなので、クライアント上ではどこに入りますか? –

+0

SessionIDプロパティに実際にアクセスできます.SessionIDプロパティは、セッションCookie(またはCookielessセッションを使用している場合はクエリ文字列)に格納されています。彼らは、特定のSessionIDに他のCookieやデータを結びつけるために実装したセキュリティ対策について話しているかもしれません。 SessionIDの詳細はこちらをご覧ください:http://msdn.microsoft.com/en-us/library/ms178581.aspx – womp

+0

ありがとう!理にかなっている –

2

頼んでいるのかどうか分かりませんが、認証クッキーなしでSession["userAge"]にアクセスするにはどうすればいいですか?答えはセッションとは別のエンティティだからです。

認証クッキー(デフォルト名.ASPXAUTH)は、セッションが開始される前に作成され、セッションに基づいていることはできません。

関連する問題