begin process at 2008 09 05 21:49:02
1 237 533 membres
473 nouveaux aujourd'hui
14 313 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'autentification Forms [ Système / Sécurité ] (Jean_Marc_1968)

Problème avec l'autentification Forms le 01/04/2008 23:01:32

Jean_Marc_1968

Salut à toutes et à tous,

Sur un site j'ai utilisé le LoginWizard avec le RememberMe.

Sur certains postes (sous XP et IE6), tout se passe pour le mieux, mais sur d'autres (aussi sous XP et avec IE6), si l'option RememberMe est cochée, lorsqu'un utilisateur se connecte, il revient imperturbablement sur le login, alors que sur d'autres postes la redirection se fait bien.
Le problème se produit donc quand le LoginWizard.RememberMeSet est à true dans le FormsAuthentication.RedirectFromLoginPage(LoginWizard.UserName, LoginWizard.RememberMeSet);

Une idée de ce qui pourrait se passer ?

Merci de vos z'avis z'avisés,
Jean-Marc




Voici les codes de ma page de Login :

<%@PageLanguage="C#"MasterPageFile="~/Reno.master"AutoEventWireup="true"CodeFile="Login.aspx.cs"Inherits="Public_Login"Title="Login" %>
<asp:ContentID="Content1"ContentPlaceHolderID="ContentPlaceHolderPages"Runat="Server">
<asp:LoginID="LoginWizard"runat="server"
                     TitleText="Connexion à l'Intranet"
                     UserNameLabelText="Login :"
                     UserNameRequiredErrorMessage="Un login est requis."
                     PasswordLabelText="Mot de passe :"
                     PasswordRequiredErrorMessage="Un mot de passe est requis."
                     LoginButtonText="Se connecter"
                     PasswordRecoveryText="Mot de passe oublié ?"
                     RememberMeText="Retenir mes informations de connexion"
                     FailureText="Votre tentative de connexion a échoué. Réessayez." 
                     PasswordRecoveryUrl="~/Public/EnvoiPass.aspx" 
                     RememberMeSet="True" 
                     CssClass="menuNavigation" 
                     OnAuthenticate="LoginWizard_Authenticate"
                     DisplayRememberMe="False"
                     >
</asp:Login>
<asp:LabelID="Label1"runat="server"Font-Size="Small"ForeColor="InfoText"
Width="265px"></asp:Label>
<asp:TextBoxID="Msg"runat="server"BackColor="Transparent"BorderStyle="None"EnableViewState="False"
Height="100%"ReadOnly="True"TextMode="MultiLine"Width="100%"></asp:TextBox>
</
asp:Content>
<
asp:ContentID="Content2"ContentPlaceHolderID="ContentPlaceHolderSansAjax"Runat="Server">
</
asp:Content>




Le CodeBehind :

using

System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;

public
partial class Public_Login : System.Web.UI. Page
{
   protected void Page_Load( object sender, EventArgs e)
   {
      #region Récupération du timeout des Froms du web.config et création de la string delai avec ce temps
                  System.Web.Configuration.
AuthenticationSection authSection = (System.Web.Configuration. AuthenticationSection )
                  ConfigurationManager
.GetSection( @"system.web/authentication" );
                  TimeSpan timeOut = authSection.Forms.Timeout;
                  string delai = null ;
                  if (timeOut.Days>0) 
                  {
                     delai += timeOut.Days.ToString() +
" jour" ;
                     if (timeOut.Days > 1)
                     {
                        delai +=
"s" ;
                     }
                     if (timeOut.Hours > 0 && timeOut.Minutes > 0)
                     {
                        delai +=
", " ;
                     }
                     
else if (timeOut.Hours > 0 || timeOut.Minutes > 0)
                     {
                        delai +=
" et " ;
                     }
                  }
                  if (timeOut.Hours > 0)
                  {
                     delai += timeOut.Hours.ToString() +
" heure" ;
                     if (timeOut.Hours > 1)
                     {
                        delai +=
"s" ;
                     }
                     if (timeOut.Minutes > 0)
                     {
                        delai +=
" et " ;
                     }
                  }
                  if (timeOut.Minutes > 0)
                  {
                     delai += timeOut.Minutes.ToString() +
" minute" ;
                     if (timeOut.Minutes > 1)
                     {
                        delai +=
"s" ;
                     }
                  }
      #endregion
      Msg.Attributes.Add( "style" , "overflow :hidden" );
      if (LoginWizard.DisplayRememberMe)
      {
         Label1.Text =
"L'option \"Retenir mes informations\" permet de ne pas devoir réencoder votre login et votre mot de passe durant" + delai + " après votre dernière manipulation." ;
         Label1.Visible =
true ;
      }
      else
      {
         Label1.Visible =
false ;
         LoginWizard.RememberMeSet =
false ;
      }
   }

   protected void LoginWizard_LoggedIn( object sender, EventArgs e)
   {
      MembershipUser Utilisateur = Membership .GetUser(LoginWizard.UserName);
      Session[
"UserID" ] = Utilisateur.ProviderUserKey.ToString();
   }

   protected void LoginWizard_Authenticate( object sender, AuthenticateEventArgs e)
   {
      try
      {
         if ( Membership .ValidateUser(LoginWizard.UserName, LoginWizard.Password))
         {
            if (! string .IsNullOrEmpty(Request.QueryString[ "ReturnUrl" ]))
            {
               FormsAuthentication .RedirectFromLoginPage(LoginWizard.UserName, LoginWizard.RememberMeSet);
            }
            else
            {
            FormsAuthentication .SetAuthCookie(LoginWizard.UserName, LoginWizard.RememberMeSet);
            }
         }
      }
      catch ( Exception error)
      {
         LoginWizard.Visible = false ;
         Label1.Visible =
false ;
         Msg.Text = error.Message;
      }
   }
}

Re : Problème avec l'autentification Forms le 07/04/2008 15:16:06

Jean_Marc_1968
Je viens de faire un constat qui pourrait éventuellement s'avérer utile :
Le problème se produit sur Internet Explorer 7 mais pas sur Internet Explorer 6.

Si ça peut aider et donner une idée à qqn quant à savoir pourquoi ce problème se produit et comment le résoudre ...

Parce que je n'ai toujours pas la solution à ce problème,

Merci de vos z'avis z'avisés,
Jean-Marc

Re : Problème avec l'autentification Forms le 07/04/2008 16:15:56

Jean_Marc_1968
Désolé, ce que j'ai écris dans le post précédent n'est pas tout à fait vrai.
Je viens de constater que dans certains cas cela se produit avec IE6 aussi.
Et j'ai constaté que je User est bien connecté, mais qu'il n'est pas redirigé. Le LoginWizard est remise à 0, mais le menu apparaît et le lien "déconnexion" aussi.

Pourquoi la redirection ne fonctionne-t-elle pas ?
Je ne sais pas.


Classé sous : system, timeout, delai, if, loginwizard

Participer à cet échange

Pub



Appels d'offres

Snippets en rapport

CalendriCode

Septembre 2008
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
2930     

Boutique

Boutique de goodies CodeS-SourceS