Problème avec l'autentification Forms

Jean_Marc_1968 Messages postés 21 Date d'inscription jeudi 22 septembre 2005 Statut Membre Dernière intervention 17 avril 2019 - 1 avril 2008 à 23:01
Jean_Marc_1968 Messages postés 21 Date d'inscription jeudi 22 septembre 2005 Statut Membre Dernière intervention 17 avril 2019 - 7 avril 2008 à 16:15
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 :


<%@
Page
Language="C#"
MasterPageFile="~/Reno.master"
AutoEventWireup="true"
CodeFile="Login.aspx.cs"
Inherits="Public_Login"
Title="Login" %>

<asp:Content
ID="Content1"
ContentPlaceHolderID="ContentPlaceHolderPages"
Runat="Server">
<asp:Login
ID="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:Label
ID="Label1"
runat="server"
Font-Size="Small"
ForeColor="InfoText"
Width="265px"></asp:Label>
<asp:TextBox
ID="Msg"
runat="server"
BackColor="Transparent"
BorderStyle="None"
EnableViewState="False"
Height="100%"
ReadOnly="True"
TextMode="MultiLine"
Width="100%"></asp:TextBox>
</asp:Content>
<asp:Content
ID="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;
      }
   }
}

2 réponses

Jean_Marc_1968 Messages postés 21 Date d'inscription jeudi 22 septembre 2005 Statut Membre Dernière intervention 17 avril 2019
7 avril 2008 à 15:16
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
0
Jean_Marc_1968 Messages postés 21 Date d'inscription jeudi 22 septembre 2005 Statut Membre Dernière intervention 17 avril 2019
7 avril 2008 à 16:15
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.
0
Rejoignez-nous