2008-10-03 20 views
3

J'essaye de mettre en place le contrôle de connexion pour se rappeler les identifiants de connexion d'un utilisateur qui a précédemment entré leur nom d'utilisateur et mot de passe avec succès. Je mets la propriété remember me à true, mais cela ne semble pas triger les événements où je pourrais lire le cookie et se connecter automatiquement à l'utilisateur.Comment obtenir le contrôle de connexion asp.net pour authentifier automatiquement un utilisateur précédemment authentifié?

Existe-t-il un mécanisme simple pour accomplir ceci?

Répondre

5

Vous devez Google pour Forms Authentication in ASP.NET 2.0

Vous devrez configurer votre application (via web.config) et peut aussi avoir besoin de modifier les paramètres IIS. Bien que tout soit assez simple, il y a des tas de paramètres qui peuvent être utilisés, mieux vaut donc lire certains des articles. ScottGu a un blog entry qui va dans beaucoup de bons détails.

Il y a aussi beaucoup de bons video à www.asp.net y compris ces Security Tutorials

essayer How to: Create an ASP.NET Login Page et Walkthrough: Creating a Web Site with Membership and User Login. Si je me souviens bien, vous devez toujours vous authentifier vous-même, à moins que vous n'utilisiez le fournisseur d'appartenance à Sql Server. Dans ce cas, vous devez toujours configurer la base de données et web.config. Essentiellement, une fois que vous avez correctement configuré la configuration, vous avez une page de connexion. Dans cette page de connexion que vous dites authentification par formulaire pour créer le ticket d'authentification pour vous une fois que vous les authentifiez:

if (VerifyUser(name, password)) // this is not a framework method 
    FormsAuthentication.RedirectFromLoginPage(
     userName, false); // no persistent cookie 

Si vous voulez lire les données du ticket d'authentification (de nulle part ailleurs).

// output just writes to a StringBuilder 'sb' 
output(sb, "Identity.AuthenticationType", Page.User.Identity.AuthenticationType); 

FormsIdentity fi = Page.User.Identity as FormsIdentity; 
if (fi == null) 
{ 
    output(sb, "Identity Type", Page.User.Identity.ToString()); 
    return; 
} 

output(sb, "FormsIdentity.Ticket.IssueDate", fi.Ticket.IssueDate); 
output(sb, "FormsIdentity.Ticket.Expiration", fi.Ticket.Expiration); 
output(sb, "FormsIdentity.Ticket.Name", fi.Ticket.Name); 
output(sb, "FormsIdentity.Ticket.CookiePath", fi.Ticket.CookiePath); 
output(sb, "FormsIdentity.Ticket.UserData", fi.Ticket.UserData); 
output(sb, "FormsIdentity.Ticket.Version", fi.Ticket.Version); 
output(sb, "FormsIdentity.Ticket.IsPersistent", fi.Ticket.IsPersistent); 

Le point est, une fois authentifié, asp.net ne redirige l'utilisateur vers la page de connexion si le ticket d'authentification a expiré et l'utilisateur se trouve sur une page protégée. Asp.net ne vous demande pas toujours d'authentifier l'utilisateur inutilement.

+0

merci. Je suis déjà allé sur ce chemin - il n'a jamais mentionné comment ou quoi fait la propriété "remember me". soupir. – MikeJ

+0

J'ai ajouté plus de liens à la réponse. C'est un peu plus complexe que de jeter quelques contrôles sur une page. Vous devez créer des pages de connexion, etc. 'Se souvenir de moi' sert à créer un cookie d'authentification persistant. Tu ne veux pas ça souvent. –

+0

merci. J'apprécie les efforts que vous avez déployés pour me mettre sur la bonne voie. – MikeJ