ASP.NETでは;ASP.NETメンバーシップを使用してリモートHTMLページから別のASPXページにログインするにはどうすればよいですか?

StackOverflow https://stackoverflow.com/questions/8891386

質問

基本的に、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(サーバーコントロールと同様)を使用してユーザーをログインするために使用できるハンドラーの例です。

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

    1. このハンドラーを呼び出すRoutingまたはweb.configのいずれかで構成されたマッピングがあります。
    2. 要求ページには、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; } }
          }
      

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top