ASP.NETでは;ASP.NETメンバーシップを使用してリモートHTMLページから別のASPXページにログインするにはどうすればよいですか?
質問
基本的に、asp.netメンバーシップを使用している別のドメインにログインする必要があります。
一方でASP.Netメンバーシップを使用するASP.netWebアプリケーションがある場合、および 一方、別のドメインのHTMLページ。
リモートHTMLページを介してASP.NETWebサイトにログインすることは可能ですか。
以前にColdfusionでこれを実行しましたが、ASP.NETメンバーシップはサーバーコントロールを使用しています。
乾杯!
解決
ログインサーバーコントロールの下で、ASP.NETはMembershipProvider実装と、ASP.NETメンバーシップを持つユーザーへのフォーム認証を使用します。ログインサーバーコントロールを使用せずに、資格情報を手動で検証してから、FormsAuthentication
cookieをResponse
に添付することにより、これらの手順を複製できます。
開始に役立つリソースは次のとおりです。
-
フォーム認証チケットとCookieについて -MSDN - 説明:ASP.NET2.0でのフォーム認証 -MSDN
- ASP.NETのメンバーシップ、役割、およびプロファイルの調査 -4guysfromrolla
また、
Login
コントロールのソースを反映することでメリットが得られるため、ユーザーがサーバーコントロールを使用してログインしたときに発生するイベントの正確なシーケンスを理解できます。これにより、特定のユースケースに合わせてその機能を複製する方法を理解しやすくなります。補足として、ログイン要求を処理するためのインジェクションポイントとしてカスタム
IHttpHandler
実装を使用することをお勧めしますが、このタスクを実行する方法はたくさんあります。更新、気前がいいので
以下は、ASP.NETメンバーシップとFormsAuthentication(サーバーコントロールと同様)を使用してユーザーをログインするために使用できるハンドラーの例です。
このコードは次のことを前提としています:
- このハンドラーを呼び出すRoutingまたはweb.configのいずれかで構成されたマッピングがあります。
-
要求ページには、web.configまたはルーティングでマップされたURL /ルートを指すフォームがあり、そのページのフォームには、
username
という名前のusername
入力フィールドとpassword
が含まれています。password
という名前の入力フィールド。public class LoginHandler : IHttpHandler { void IHttpHandler.ProcessRequest(HttpContext context) { string username = context.Request["username"]; string password = context.Request["password"]; if (!string.IsNullOrWhiteSpace(username) && !string.IsNullOrWhiteSpace(password) && Membership.Provider.ValidateUser(username, password)) { FormsAuthentication.SetAuthCookie(username, true); RenderUserLoggedInResponse(context.Response,username); } else FormsAuthentication.RedirectToLoginPage("loginfailure=1"); } private static void RenderUserLoggedInResponse(HttpResponse response, string username) { response.Write(string.Format("You have logged in successfully, {0}!", username)); response.End(); } bool IHttpHandler.IsReusable { get { return true; } } }