更新: 2012年12月24日
以下の回答は古くなっています。由緒ある FormsAuthentication.Authenticateは、 ASP.NET 4MVC4で廃止としてマークされるようになりました。
MVC 4には、古いシステムの多くの問題を解決する新しいブランドのスパンキングWebSecurity認証システムが付属しています。プロジェクトでまだMVC3以下を使用している場合を除いて、調査してください。
短い答えは「それは非常に注意深く動作します」です。
長い答え...
ユーザーアカウントの詳細は、(デフォルトで)SQL CEデータベース(ASPNETDB.MDFファイルにあります)に保存されます。
ASP.NETには、認証を支援するためのメンバーシップおよびロールプロバイダーシステムが組み込まれています。これは、ASP.NETがアカウントの組み込みサポートを有効にするために使用する抽象化です。デフォルトでは、アプリケーションを作成するときに、web.configファイルは、アプリケーションがこのメンバーシッププロバイダーの組み込み実装を使用して、アプリケーションがデータベースの読み取りと書き込み、パスワードのハッシュまたは暗号化の魔法を実行できるように構成されます。ユーザーの検証など。
入手したコードサンプルは、FormsAuthenticationの一部です。
FormsAuthentication.SetAuthCookie(RegisterUser.UserName、false / * createPersistentCookie * /);
これは、デフォルトで認証を管理するコンポーネントです。上記の呼び出しを実行すると、ASP.NETフォーム認証システムがユーザー名とセッションデータを暗号化し、ユーザーのブラウザのCookieに保存します。(このCookieは、FormsAutentication.SignOut()を呼び出すと削除されます)
このCookieは、リクエストごとにサーバーに送信されます。したがって、リクエストごとに、FormsAuthenticationはこれをチェックして検証します(復号化し、ユーザーが誰であるかをチェックし、セッションの有効期限が切れていないことを検証し、アプリケーションでいくつかのプロパティを設定して、コードがリクエストを行っている用途を認識できるようにします)。
/ * createPersistentCookie * /パラメータが設定されている場合、Cookieは永続的に設定されます。つまり、ログイン中にブラウザを閉じて再度開いてもCookieは削除されません。これは、Facebookなどにログインする場合と同じです。 、[Remember Me]チェックボックスをオンにすると、Visual Studioによって作成されたプロジェクトのデフォルトの実装は、ログインページでこれを正確に実行します。
これで、ログインプロセスで何が起こっているのかをよりよく理解できたと思います。これらはASP.NETで実装される方法のため、必要に応じて、機能を簡単に構成、拡張、または独自の実装に置き換えることができます。
動作をよりよく理解するには、カスタムメンバーシッププロバイダーの実装方法に関するこの記事に従ってくださいhttp://msdn.microsoft.com/en-us/library/f1kyba5e.aspx
ASP.NETを初めて使用する場合は、メンバーシップと認証がどのように機能するかを読むのは大変かもしれません。(私はここ数日、自分の要件に合うカスタムメンバーシッププロバイダーを理解して作成しようと個人的に費やしました。少しイライラしたので、休憩してあなたに答え、基本をリフレッシュしました。)
既存のシステムの動作に満足している場合は、それを使用してください。カスタムプロバイダーを実装して、それがどのように機能するかを理解することは問題ありません。しかし、組み込みシステムは過去10年間に多くのテストを経て、機能していることが証明されています。では、それを使ってみませんか?既存のメンバーシップシステムを完全に理解していないという理由だけで、既存のメンバーシップシステムを置き換えようとするさまざまなサイトでの複数のカスタム実装を見てきました。これらの実装のほとんどは、すでに利用可能なものを書き直すことになり、拡張性とセキュリティに関しては不十分です。賢者がかつて「壊れていなければ直さないで」と言ったように。