2

MVC 4 プロジェクトで simplemembership を使用しています。これにより、期待どおりにセッションが作成されますが、セッションの有効期限が切れた後もユーザー情報が保持されているようです。

たとえば、20 分後、If User.Identity.IsAuthenticated == true は引き続き機能しますが、セッション変数はすべて空です。

なぜこれが起こるのか誰か教えてもらえますか?この Cookie は管理されていますか? If User.Identity.IsAuthenticated == true 以外のチェックを行う必要がありますか?

セッションの有効期限が切れている場合、誰かにアクセスしてもらうことはできません。

ありがとう

4

1 に答える 1

5

これらは、ASP.NET の 3 つの異なる概念です。

  • ASP.NET セッション
  • フォーム認証
  • メンバーシップ プロバイダー (あなたの場合は単純なメンバーシップ)

これら 3 つは個別に使用でき、それらの間に依存関係はありません。それぞれを個別に説明します。

  • ASP.NET セッション - さまざまな HTTP 要求間で保持したい情報のサーバー側ストレージを提供します。すぐに使用できるサーバーには、InProc、StateServer、および SQLServer の 3 種類のストレージがあります。サーバー上で対応するストアから正しいデータを取得できるように、クライアントにはセッションの識別子のみを含む Cookie があります。ASP.NET セッションの詳細については、http: //msdn.microsoft.com/en-us/library/ms178581 (v=vs.100).aspx を参照してください。

  • フォーム認証 - 認証されたユーザーを追跡するために使用されます。現在認証されているユーザーは Cookie に保存されます。実際には、彼の暗号化されたユーザー名はフォーム認証 Cookie に保存され、各要求で渡されます。User.Identity.IsAuthenticatedプロパティは、FormsAuthenticationModule によってこの Cookie の値から設定されます。フォーム認証のしくみについて詳しくは、http: //msdn.microsoft.com/en-us/library/ff647070.aspxをご覧ください。

  • シンプル メンバーシップ プロバイダー -MembershipProviderメンバーシップ ユーザーの格納に SQL サーバーを使用する ASP.NET 実装。

ASP.NET MVC では、これらの概念は従来の ASP.NET Web フォームと同じように機能します。Authorize唯一の違いは、認証されたユーザー (有効なフォーム認証 Cookie を提供したユーザー) のみがアクションにアクセスできるように、属性を使用してコントローラー アクションをデコレートできることです。

于 2013-08-06T15:01:19.577 に答える