Domanda

Fondamentalmente ho bisogno di accedere a un altro dominio che utilizza l'appartenenza ad asp.net.

Se abbiamo un'applicazione web ASP.net che utilizza l'appartenenza ASP.Net da un lato, e una pagina HTML da un altro dominio d'altra parte.

È possibile accedere al sito Web ASP.NET tramite una pagina HTML remota.

L'ho già fatto con Coldfusion, ma l'appartenenza ad ASP.NET utilizza un controllo server.

Saluti!

È stato utile?

Soluzione

Sotto il controllo del server di accesso, ASP.NET utilizza un'implementazione di MembershipProvider e un'autenticazione basata su form per un utente con appartenenza ad ASP.NET. È possibile replicare questi passaggi senza utilizzare il controllo del server di accesso, convalidando manualmente le credenziali e quindi allegando il cookie FormsAuthentication al Response.

Ecco alcune risorse che dovrebbero aiutarti a iniziare:

Probabilmente trarrai anche vantaggio dalla riflessione sull'origine del controllo Login, in modo da poter comprendere l'esatta sequenza di eventi che si verificano quando un utente accede utilizzando il controllo server. Questo dovrebbe renderti più facile capire come replicare quella funzionalità per il tuo particolare caso d'uso.

Come nota a margine, consiglierei di utilizzare un'implementazione IHttpHandler personalizzata come punto di iniezione per l'elaborazione della richiesta di accesso, ma ci sono molti modi per eseguire questa operazione .

Aggiorna, mi sento generoso, quindi

Di seguito è riportato un gestore di esempio che è possibile utilizzare per accedere a un utente con ASP.NET Membership e FormsAuthentication (proprio come il controllo del server).

Questo codice presuppone:

  1. Esiste una mappatura configurata con Routing o web.config che chiamerà questo gestore.
  2. La pagina richiedente ha un modulo che punta all'URL / route mappato nel web.config o con il routing e che il modulo su quella pagina contiene un campo di input username con il nome username e un password campo di immissione con il nome 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; } }
        }
    
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top