begin process at 2008 08 28 06:54:45
1 232 932 membres
52 nouveaux aujourd'hui
14 291 membres club

Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum.
Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : Problème avec l'authentification ASP.NET par login [ Divers / Autre ] (bidou_01)

Problème avec l'authentification ASP.NET par login le 08/03/2008 11:43:56

bidou_01
Bonjour,

Je viens vers vous car j'ai un problème avec l'authentification ASP.NET sur mon site Internet. Cela fait plusieurs semaines que je cherche, mais toujours le même problème.

Je souhaite à faire en sorte que mes utilisateurs n'est pas à se relogguer constamment, comme sur Codes-Sources, afin de rendre la navigation agréable.

J'utilise l'authentification ASP.NET par login.

Après avoir vérifié l'authenticité des informations d'identification saisie par l'utilisateur, je crée un tocket d'authentification de 4 ans, et un cookie de 4 ans, si l'utilisateur souhaite que le site se souvienne de lui :

if

(Membership.ValidateUser(login_form.UserName, login_form.Password))

{

          FormsAuthenticationTicket ticket = newFormsAuthenticationTicket(1,

                    login_form.UserName,

                    DateTime.Now,

                    DateTime.Now.AddYears(4),

                    login_form.RememberMeSet,

                    "",

                    FormsAuthentication.FormsCookiePath);

          string encryptedTicket = FormsAuthentication.Encrypt(ticket);

          HttpCookie cookie = newHttpCookie(FormsAuthentication.FormsCookieName, encryptedTicket);

          if (ticket.IsPersistent)

                    cookie.Expires = ticket.Expiration;

          Response.Cookies.Add(cookie);

          Response.Redirect(

FormsAuthentication.GetRedirectUrl(login_form.UserName, login_form.RememberMeSet));

}


Ensuite dans le global.asax, je check le cookie et renouvelle le ticket de l'utilisateur, le cas échéant :

public

void FormsAuthentication_OnAuthenticate(object sender, FormsAuthenticationEventArgs args)

{

          HttpCookie cookie = args.Context.Request.Cookies[FormsAuthentication.FormsCookieName];          
          
            
if
(cookie == null) { return; }

                  FormsAuthenticationTicket Ticket = null;

            try

            {

                     Ticket =

FormsAuthentication.Decrypt(cookie.Value);

             }

             catch

            {

                  return;

            }

            if ((null == Ticket) || Ticket.Expired)

            {

                  return;

            }

            FormsAuthenticationTicket Ticket2 = Ticket;

            if (FormsAuthentication.SlidingExpiration)

                  Ticket2 =

FormsAuthentication.RenewTicketIfOld(Ticket);

            args.Context.User =

new System.Security.Principal.GenericPrincipal(newFormsIdentity(Ticket2), newstring[0]);

            if (Ticket2 != Ticket)

            {

                  string hash = FormsAuthentication.Encrypt(Ticket2);

                  if (Ticket2.IsPersistent)

                           cookie.Expires = Ticket2.Expiration;

                  cookie.Value = hash;

                  cookie.HttpOnly =

true;

                  if (FormsAuthentication.CookieDomain != null)

                        cookie.Domain =

FormsAuthentication.CookieDomain;

                  args.Context.Response.Cookies.Add(cookie);

            }

}

Malgrès tout ça, mes utilisateurs doivent se relogguer toutes les 24 heures en moyenne. Sérieux là je n'y comprend vraiment rien, mon code me paraît juste.

Désolé pour la tartine de code, mais là il me faut de l'aide :)

Cordialement,

Bidou_01
 


[ Lien ] | [ Lien ]

Re : Problème avec l'authentification ASP.NET par login le 10/03/2008 23:15:28

scottmat
Membre Club
bonjour,

dans le fichier web.config tu as créer des balises membership avec les paramètres timeout ?

Re : Problème avec l'authentification ASP.NET par login le 10/03/2008 23:24:28

bidou_01
Bonsoir,

J'ai des balises membership effectivement, mais pas de paramètre Timeout à ce niveau là. En revanche, j'ai jonglé avec le paramètre Timeout dans les balises :

<authentication mode="Forms">
   <forms loginUrl="login.aspx?auth_required=true" name=".ASPNETAUTH" protection="All"> //retiré le Timeout
   </forms>
  </authentication>

Mais sans succès malheureusement...

Cordialement,

Bidou_01
 



[Mon Blog] - [<>

Re : Problème avec l'authentification ASP.NET par login le 10/03/2008 23:45:22

scottmat
Membre Club
non non j'ai dit une bétise ! ton timeout été bien placer, regarde cet article de microsoft : [ Lien ] en bas il en parler et au début ils mettent bien la structure que tu avait :

<authentication mode="Forms">
 <forms name=".ASPXFORMSDEMO" loginUrl="logon.aspx"
 protection="All" path="/" timeout="30" />
</authentication>

apparament par default sa serai réglé sur une heure, après à nous de personnaliser.

Re : Problème avec l'authentification ASP.NET par login le 11/03/2008 09:24:11

bidou_01
Bonjour, effectivement, c'est une heure par défaut. Mais il me semble que c'est ici le Timeout de session que l'on règle. Hors on m'a conseillé de ne pas le régler trop grand, pour eviter de faire péter le pool aspnet de IIS (en cas de trop nombreux visiteurs authentifiés). Mais ce que je ne comprend pas c'est que mon FormsAuthenticationTicket a une validité de 4 ans, donc lors de la lecture du cookie (qui a lui aussi une durée de vie de 4 ans) dans le global.asax, ce même ticket devrait logiquement être renouvellé.

J'avais testé je ne sais combien de fois de changer la valeur du timeout comme tu me l'as indiqué, mais toujours sans succès...

Merci quand même pour tes réponses :)

Cordialement,

Bidou_01
 



[Mon Blog] - [MSLive]

Re : Problème avec l'authentification ASP.NET par login le 25/03/2008 23:07:30

primactif
Réponse acceptée !
Bonjour

j'ai cherché pedant longtemps aussi l'origine est du à l'hébergeur, si celui-ci est en load balancing ex: aspserveur ou ikoula et autre essaye avec machinekey dans ton web.config.

ceci dit moi j'ai résolu en changeant d'hebergeur.

Bruno POUPON webmaster@primactif.com
HTTP://WWW.PRIMACTIF.COM

Re : Problème avec l'authentification ASP.NET par login le 26/03/2008 00:29:18

bidou_01

Bonjour,

Effectivement mon hébergeur a mis en place une solution de Load Balancing il me semble! Je vais me renseigner de ce côté là. Qu'entend tu par "essaye avec machinekey dans ton web.config." ?

Merci pour ta réponse :)

Cordialement,

Bidou_01
 



[Mon Blog] - [MSLive]

Re : Problème avec l'authentification ASP.NET par login le 26/03/2008 13:41:28

primactif
Réponse acceptée !

Bonjour il faut générer une clé voir

 

[ Lien ]


Bruno POUPON webmaster@primactif.com
HTTP://WWW.PRIMACTIF.COM


Re : Problème avec l'authentification ASP.NET par login le 17/05/2008 19:08:46

bidou_01
Je viens juste de trouver du temps pour essayer !! Je te tiens au courant !

Cordialement,

Bidou_01
 



[Mon Blog] - [MSLive]

Re : Problème avec l'authentification ASP.NET par login le 19/05/2008 23:06:59

bidou_01
Merci beaucoup pour le coup de main ;) ça fonctionne parfaitement !

Cordialement,

Bidou_01
 



[Mon Blog] - [MSLive]


Classé sous : login, cookie, ticket, formsauthentication, if

Participer à cet échange

Livres en rapport

Pub



Appels d'offres

Recherche developpeur ...
Budget : 700€
SITE MARCHAND LOCATION...
Budget : 3 000€
SITE MARCHAND POUR HOTEL
Budget : 4 000€

Snippets en rapport

CalendriCode

Août 2008
LMMJVSD
    123
45678910
11121314151617
18192021222324
25262728293031

VS Express FR Gratuit !

VS Express en français et 100% gratuit !

Téléchargements

Logiciels à télécharger sur le même thème :

Boutique

Boutique de goodies CodeS-SourceS