2009-06-18 8 views
1

FormsAuthentication.SetAuthCookie( "john"、true)を呼び出すと、Cookieに格納されているユーザー名はありますか?FormsAuthenticationクラスC#

私が見つけようとしているのは、ユーザーセッションがタイムアウトしてユーザーが再度サイトにアクセスした場合、Request.IsAuthenticatedがtrueに設定されていますが、ユーザー名はどこから来ていますか?

答えて

3

セッションタイムアウトと認証タイムアウトは、2つの異なるものです。認証を無効にすることなくセッションをタイムアウトさせることができます。

はい、ユーザーの名前は認証Cookieに格納されます。ただし、暗号化されています。

0

このMSDNページから、CookiesSupportedがfalseに設定されている場合、フォーム認証チケットをクッキーまたはURLのいずれかに設定します。

あなたに本当の第二引数を設定した場合(セッションtimesout後)ユーザーが訪問二回目は、あなたのアプリが認証チケットとクッキーを取得し、それは私の知る限りとして、(ユーザーの詳細情報を取得する際に、クッキーがとても永続的です思う)。

あなたはこれを実現するためにしたくない場合は、私はfalseに第二引数を設定することのどちらかだと思う:

FormsAuthentication.SetAuthCookie("john", false); 

または明示的にチケット(およびそのクッキー)をクリア:

FormsAuthentication.SignOut(); 

ますあなたのために働く。

1

ブラウザを使用してCookieの内容を調べることができます。例えば、フロークッキーの上に私のスタックは次のようになります。

F650CE82F53D2C39C8C06B5F26EB34E20FEAC3585035E2A6E9FA30B8ECF5051F4D9C8 ....

値は、ユーザ名と、潜在的ユーザーの役割の暗号化されたグーです。

あなたが望む限り、クッキーは良いです。セッションには結び付けられていません。

サンプルコードでは、永続的なCookieを作成しているため、ブラウザを閉じてもクッキーの有効期間中存続します。クッキーがメモリベースの場合、ブラウザを閉じるまで有効です。ただし、有効期限が長くなるとCookieが有効になります。ここで

は、デフォルト値は次のとおりです。

<forms loginUrl="Login.aspx" 
      protection="All" 
      timeout="30" 
      name=".ASPXAUTH" 
      path="/" 
      requireSSL="false" 
      slidingExpiration="true" 
      defaultUrl="default.aspx" 
      cookieless="UseDeviceProfile" 
      enableCrossAppRedirects="false" /> 
関連する問題