Question

J'ai essentiellement besoin de me connecter dans un autre domaine qui utilise l'appartenance ASP.NET.

Si nous avons une application Web ASP.NET utilisant une appartenance ASP.NET d'une part et une page HTML d'un autre domaine d'autre part.

Est-il possible de se connecter dans le site Web ASP.NET via une page HTML distante.

Je l'ai déjà fait avec ColdFusion, mais l'appartenance ASP.NET utilise un contrôle de serveur.

Acclamations!

Était-ce utile?

La solution

Sous le contrôle du serveur de connexion, ASP.NET utilise une implémentation MemberHipprovider et forme l'authentification à un utilisateur avec l'ASP.NET. Vous pouvez reproduire ces étapes sans utiliser le contrôle du serveur de connexion, en validant manuellement les informations d'identification puis en fixant le FormsAuthentication cookie au Response.

Voici quelques ressources qui devraient vous aider à démarrer:

Vous bénéficieriez également probablement de la réflexion sur la source du Login Contrôle, vous pouvez donc comprendre la séquence exacte des événements qui se produit lorsqu'un utilisateur se connecte en utilisant le contrôle du serveur. Cela devrait vous permettre de comprendre plus facilement comment reproduire cette fonctionnalité pour votre cas d'utilisation particulier.

En tant que note latérale, je recommanderais d'utiliser une coutume IHttpHandler la mise en œuvre comme point d'injection pour traiter la demande de connexion, mais il existe de nombreuses façons d'accomplir cette tâche.

Mise à jour, je me sens généreux, donc

Vous trouverez ci-dessous un exemple de gestionnaire que vous pouvez utiliser pour enregistrer un utilisateur avec l'appartenance ASP.NET et les formulaires (tout comme le contrôle du serveur).

Ce code suppose:

  1. Il y a un mappage configuré avec le routage ou le web.config qui appellera ce gestionnaire.
  2. La page de demande a un formulaire qui pointe vers l'URL / l'itinéraire qui est mappé dans le web.config ou avec le routage, et que le formulaire sur cette page contient un username Champ de saisie avec le nom username et un password Champ de saisie avec le nom 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; } }
        }
    
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top