2

私の Web アプリケーションでは、ログインに完全にカスタムの機能を使用しています。
Session 変数と ViewState 変数ですべてを制御します。アプリケーションからログアウトするには、Session.Abandon()コマンドを使用します。

FormsAuthentication.SignOut() も呼び出す必要があるのだろうか? このメソッドの公式ドキュメントを見てみましたが、よくわかりませんでした。

4

4 に答える 4

3

公式ドキュメントには について多くのことが書かれていることを認めざるを得ませんSignOut。備考欄には興味深い情報が盛りだくさん。

SignOut メソッドは、CookiesSupported が false の場合、Cookie または URL からフォーム認証チケット情報を削除します。SignOut メソッドを RedirectToLoginPage メソッドと組み合わせて使用​​して、1 人のユーザーをログアウトさせ、別のユーザーがログインできるようにすることができます。Cookie なしモードで排他的に実行する場合、または認証済みユーザーと匿名ユーザーの両方をサポートする場合は、リダイレクトを明示的に制御する必要があります。匿名識別子を削除した結果、特別なビジネス ロジックを実行する必要がある場合は、ログイン ページに。SignOut メソッドが呼び出されると、endResponse パラメータを false に設定して Redirect メソッドを呼び出すことにより、アプリケーションのログイン ページへのリダイレクトが行われます。現在のページの実行が完了するまでリダイレクトは行われないため、追加のコードを実行できます。

SignOut メソッドを呼び出すと、フォーム認証 Cookie のみが削除されます。Web サーバーは、後で比較するために有効な認証チケットと期限切れの認証チケットを保存しません。これにより、悪意のあるユーザーが有効なフォーム認証 Cookie を取得した場合、サイトはリプレイ攻撃に対して脆弱になります。フォーム認証 Cookie を使用する際のセキュリティを向上させるには、次の操作を行う必要があります。

  • SlidingExpiration プロパティを false に設定して、フォーム認証 Cookie の絶対有効期限を使用します。これにより、ハイジャックされた Cookie を再生できるウィンドウが制限されます。
  • RequireSSL プロパティを true に設定し、Web サイト全体を SSL で実行することにより、Secure Sockets Layer (SSL) 経由でのみ認証 Cookie を発行して受け入れます。RequireSSL プロパティを true に設定すると、ASP.NET が非 SSL 接続を介してブラウザーに認証 Cookie を送信しなくなります。ただし、クライアントは Cookie のセキュア設定を尊重しない場合があります。これは、クライアントが非 SSL 接続を介してフォーム認証 Cookie を送信する可能性があることを意味し、ハイジャックに対して脆弱なままになります。Web サイト全体を SSL で実行することにより、クライアントがフォーム認証 Cookie を平文で送信するのを防ぐことができます。
  • サーバー上の永続ストレージを使用して、ユーザーがいつ Web サイトからログアウトしたかを記録し、PostAuthenticateRequest イベントなどのアプリケーション イベントを使用して、現在のユーザーがフォーム認証で認証されたかどうかを判断します。ユーザーがフォーム認証で認証され、永続ストレージ内の情報がユーザーがログアウトしていることを示している場合は、すぐに認証 Cookie を消去し、ブラウザをログイン ページにリダイレクトします。ログインに成功したら、ユーザーがログインしていることを反映するようにストレージを更新します。この方法を使用する場合、アプリケーションはユーザーのログイン状態を追跡し、アイドル状態のユーザーを強制的にログアウトさせる必要があります。

ここで見ることができます

つまり、すべてを要約すると、はい、電話する必要がありますSignOut

于 2013-03-19T11:16:58.933 に答える
3

組み込みの ASP.NET メンバーシップ プロバイダーを使用していなくても、まだフォーム認証を使用している場合はSignOut、認証 Cookie を削除するので、はいを呼び出す必要があります。

ただし、フォーム認証をまったく使用していない場合でも、認証 Cookie は存在しないため、それを呼び出しても意味がありません。

于 2013-03-19T11:12:17.903 に答える
2

使用する必要はありません

FormsAuthentication.SignOut();

フォーム認証を使用していない場合。
ここに良いリンク
があります FormsAuthentication.SignOut() はユーザーをログアウトしません

于 2013-03-19T11:11:52.303 に答える
-1

Membership providerセキュリティ管理の必要性から開発時間を短縮するために利用できます(Identity)

またtool regsql、ユーザー用にデータベースをインストールするために、ユーザーを管理するためにも必要RoleManager functionalityですRoles(Principal)

いくつかのリンク:

http://msdn.microsoft.com/fr-fr/library/ms229862(v=vs.80).aspx

于 2013-03-19T11:11:26.600 に答える