2

基本的に、asp.netメンバーシップを使用している別のドメインにログインする必要があります。

一方ではASP.Netメンバーシップを使用するASP.netWebアプリケーションがあり、他方では別のドメインのHTMLページがある場合。

リモートHTMLページを介してASP.NETWebサイトにログインすることは可能ですか。

以前にColdfusionでこれを実行しましたが、ASP.NETメンバーシップはサーバーコントロールを使用しています。

乾杯!

4

1 に答える 1

2

Login Server Controlの下で、ASP.NETはMembershipProvider実装とFormsAuthenticationをASP.NETメンバーシップを持つユーザーに使用します。Login Server Controlを使用せずに、資格情報を手動で検証してFormsAuthenticationからCookieをに添付することにより、これらの手順を複製できますResponse

始めるのに役立つリソースを次に示します。

また、コントロールのソースを反映することでおそらくメリットLoginが得られるため、ユーザーがサーバーコントロールを使用してログインしたときに発生するイベントの正確なシーケンスを理解できます。これにより、特定のユースケースでその機能を複製する方法を理解しやすくなります。

補足として、ログイン要求を処理するためのインジェクションポイントとしてカスタムIHttpHandler実装を使用することをお勧めしますが、このタスクを実行する方法はたくさんあります

更新、私は寛大に感じているので、

以下は、ASP.NETメンバーシップとFormsAuthentication(サーバーコントロールと同様)を使用してユーザーにログインするために使用できるハンドラーの例です。

このコードは次のことを前提としています。

  1. このハンドラーを呼び出すルーティングまたはweb.configのいずれかで構成されたマッピングがあります。
  2. 要求ページには、web.configまたはルーティングでマップされたURL /ルートを指すフォームがあり、そのページのフォームには、名前の入力フィールドとusername名前の入力フィールドが含まれています。usernamepasswordpassword

        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; } }
        }
    
于 2012-01-17T08:26:08.707 に答える