基本的に、asp.netメンバーシップを使用している別のドメインにログインする必要があります。
一方ではASP.Netメンバーシップを使用するASP.netWebアプリケーションがあり、他方では別のドメインのHTMLページがある場合。
リモートHTMLページを介してASP.NETWebサイトにログインすることは可能ですか。
以前にColdfusionでこれを実行しましたが、ASP.NETメンバーシップはサーバーコントロールを使用しています。
乾杯!
基本的に、asp.netメンバーシップを使用している別のドメインにログインする必要があります。
一方ではASP.Netメンバーシップを使用するASP.netWebアプリケーションがあり、他方では別のドメインのHTMLページがある場合。
リモートHTMLページを介してASP.NETWebサイトにログインすることは可能ですか。
以前にColdfusionでこれを実行しましたが、ASP.NETメンバーシップはサーバーコントロールを使用しています。
乾杯!
Login Server Controlの下で、ASP.NETはMembershipProvider実装とFormsAuthenticationをASP.NETメンバーシップを持つユーザーに使用します。Login Server Controlを使用せずに、資格情報を手動で検証してFormsAuthentication
からCookieをに添付することにより、これらの手順を複製できますResponse
。
始めるのに役立つリソースを次に示します。
また、コントロールのソースを反映することでおそらくメリットLogin
が得られるため、ユーザーがサーバーコントロールを使用してログインしたときに発生するイベントの正確なシーケンスを理解できます。これにより、特定のユースケースでその機能を複製する方法を理解しやすくなります。
補足として、ログイン要求を処理するためのインジェクションポイントとしてカスタムIHttpHandler
実装を使用することをお勧めしますが、このタスクを実行する方法はたくさんあります。
以下は、ASP.NETメンバーシップとFormsAuthentication(サーバーコントロールと同様)を使用してユーザーにログインするために使用できるハンドラーの例です。
このコードは次のことを前提としています。
要求ページには、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; } }
}