Dans asp.net; Comment puis-je me connecter d'une page HTML distante dans une autre page ASPX avec ASP.NET
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!
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:
- Comprendre le billet d'authentification des formulaires et le cookie - MSDN
- Expliquée: Forme d'authentification dans ASP.NET 2.0 - MSDN
- Examiner l'adhésion, les rôles et le profil d'ASP.NET - 4guysfromrolla
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:
- Il y a un mappage configuré avec le routage ou le web.config qui appellera ce gestionnaire.
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 nomusername
et unpassword
Champ de saisie avec le nompassword
.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; } } }