IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

ASP.NET Discussion :

Perte variable de session


Sujet :

ASP.NET

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    249
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 249
    Points : 95
    Points
    95
    Par défaut Perte variable de session
    Bonjour à tous,

    Dans mon site sous C#, j'inscrit l'ID d'un utilisateur dans une variable de session. Après ce remplissage de cette variable, je l'affiche en Response.Write :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
          if (codes.UTILISATEUR_Connexion_Autorisee(Connexion.UserName, Connexion.Password))
            {
                Session["CDV_ID_User"] = codes.UTILISATEUR_ID(Connexion.UserName, Connexion.Password);
                if (Connexion.RememberMeSet)
                {
                    Response.Cookies["CDV_User"]["email"] = Connexion.UserName;
                    Response.Cookies["CDV_User"]["mdp"] = Connexion.Password;
                }
     
                Response.Write(Session["CDV_ID_User"].ToString());
            }
            else
            {
     
            }
    Cela fonctionne parfaitement, il m'affiche l'ID de l'utilisateur authentifié. Le problème, c'est que si j'actualise la page, ou si j'effectue la moindre action (clic sur bouton, redirection), la variable se vide, je n'y ai plus accès...

    Pouvez-vous m'aider ?

    Merci.
    Vive Visual Studio.net !!!

  2. #2
    Membre expérimenté Avatar de Arthis
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    1 265
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : Italie

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 265
    Points : 1 352
    Points
    1 352
    Par défaut
    Montres ton code c# en entier.

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    249
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 249
    Points : 95
    Points
    95
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    using System;
    using System.Collections;
    using System.Configuration;
    using System.Data;
    using System.Linq;
    using System.Web;
    using System.Web.Security;
    using System.Web.UI;
    using System.Web.UI.HtmlControls;
    using System.Web.UI.WebControls;
    using System.Web.UI.WebControls.WebParts;
    using System.Xml.Linq;
     
    public partial class _Default : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            try
            {
                Response.Write(Session["CDV_ID_User"].ToString());
            }
            catch
            {
            }
     
        }
        protected void Connexion_Authenticate(object sender, AuthenticateEventArgs e)
        {
            if (codes.UTILISATEUR_Connexion_Autorisee(Connexion.UserName, Connexion.Password))
            {
                Session["CDV_ID_User"] = codes.UTILISATEUR_ID(Connexion.UserName, Connexion.Password);
                if (Connexion.RememberMeSet)
                {
                    Response.Cookies["CDV_User"]["email"] = Connexion.UserName;
                    Response.Cookies["CDV_User"]["mdp"] = Connexion.Password;
                }
     
                Response.Write(Session["CDV_ID_User"].ToString());
            }
            else
            {
     
            }
        }
    }
    Vive Visual Studio.net !!!

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    249
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 249
    Points : 95
    Points
    95
    Par défaut
    Le connexion_Authenticate correspond à la procédure lors du clic sur "Se connecter" via le contrôle ASP.net "Login".

    Donc lorsque je me connecte, la variable de session se remplie bien, il me renvoie l'ID de l'utilisateur, puis lorsque j'actualise la page, plus rien...
    Vive Visual Studio.net !!!

  5. #5
    Membre expérimenté Avatar de Arthis
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    1 265
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : Italie

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 265
    Points : 1 352
    Points
    1 352
    Par défaut
    met un point d'arret dans Visual studio sur cette ligne:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Session["CDV_ID_User"] = codes.UTILISATEUR_ID(Connexion.UserName, Connexion.Password);
    C'est le seul endroit ou tu retouches a ta variable de session. Verifies que si tu passes dans cette fonction, tu ne mets pas null dans cette variable.

    Ensuite, pour les cookies d'autentification, jettes un coup d'oeil du coté de

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    FormsAuthentication.SetAuthCookie(UserName, false)
    et son pendant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    FormsAuthentication.SignOut();
    Ca pourrait t'ête utile maintenant ou plus tard.

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    249
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 249
    Points : 95
    Points
    95
    Par défaut
    non il ne met pas de "null" car il me renvoie bien le bon ID après identification.

    Pour le FormsAuthentication.SetAuthCookie(UserName, false), comment faire ensuite pour lire ce cookie depuis une autre page du site ?

    Y a t-il quelque chose à régler dans web.config pour utiliser cette méthode ?

    Merci.
    Vive Visual Studio.net !!!

  7. #7
    Membre expérimenté Avatar de Arthis
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    1 265
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : Italie

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 265
    Points : 1 352
    Points
    1 352
    Par défaut
    C'est étrange que ta variable de session soit reinitialisée lors du rafraichissement de ta page. Il n'y a aucune raison pour ca.
    pourrais tu mettre ton :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    try
            {
                Response.Write(Session["CDV_ID_User"].ToString());
            }
            catch
            {
            }
    dans l 'evenement OnPrerender, je suspecte un probleme de cycle de vie aspx.

    Sinon, tu rajoutes ceci par exemple dans ton web.config. Tous les utilisateurs anonymes auront alors besoin de s'authentifier pour acceder a la page mapage.aspx :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    <location path="Monrepertoire/mapage.aspx">
        <system.web>
           <authorization>
    	<deny users="?"/>
           </authorization>
        </system.web>
    </location>
    et :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    <authentication mode="Forms">
    <forms name="Login" loginUrl="/registration/login.aspx" 
            defaultUrl="/" protection="All" path="/" />
    </authentication>

  8. #8
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    249
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 249
    Points : 95
    Points
    95
    Par défaut
    Où se trouve onprerender ? A quoi cela sert-il ?

    Sinon peut on pointer plusieurs pages dans Web.config ?

    Merci.
    Vive Visual Studio.net !!!

  9. #9
    Membre expérimenté Avatar de Arthis
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    1 265
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : Italie

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 265
    Points : 1 352
    Points
    1 352
    Par défaut
    fais une petite recherche sur le cycle de vie de la page. Ca va t'etre tres utile.

    sinon pour la deuxieme question oui.

Discussions similaires

  1. Perte variables de session IE8
    Par Arnaud69100 dans le forum Langage
    Réponses: 7
    Dernier message: 19/11/2010, 20h40
  2. Perte des variables de sessions
    Par Dayom dans le forum Langage
    Réponses: 12
    Dernier message: 17/07/2006, 11h04
  3. Réponses: 32
    Dernier message: 20/03/2006, 14h23
  4. Perte d'une variable de session
    Par gregal dans le forum Langage
    Réponses: 2
    Dernier message: 17/03/2006, 08h35

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo