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

Développement Web avec .NET Discussion :

Conserver les informations d'un utilisateur


Sujet :

Développement Web avec .NET

  1. #1
    Membre habitué
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2009
    Messages
    391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2009
    Messages : 391
    Points : 185
    Points
    185
    Par défaut Conserver les informations d'un utilisateur
    Bonjour à tous,



    j'aimerais savoir quelle est la solution la plus simple et comment on fait pour stocker des informations d'utilisateur pour une application web écrite avec ASP.NET/C# ?

    J'essaie d'utiliser les cookies mais je ne sais pas trop par quoi commencer.

    Merci d'avance.

    Edit :

    Est-ce que par exemple, un code comme celui-ci peut fonctionner et est suffisant pour voir si c'est la première utilisation ou non de l'utilisateur ?

    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
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
     
    // on vérifie si le cookie existe ou non
                if (HttpContext.Current.Request.Cookies["cookiesCriteres"] != null)
                {
                    if (HttpContext.Current.Request.Cookies["cookiesCriteres"]["cbOF_Ouvert"].Equals('1'))
                    {
                        cbOF_ouvert.Checked = true;
                    }
                    if (HttpContext.Current.Request.Cookies["cookiesCriteres"]["cbOF_Libere"].Equals('1'))
                    {
                        cbOF_libere.Checked = true;
                    }
                    if (HttpContext.Current.Request.Cookies["cookiesCriteres"]["cbOF_NonAss"].Equals('1'))
                    {
                        cbOF_nonAss.Checked = true;
                    }
                    if (HttpContext.Current.Request.Cookies["cookiesCriteres"]["cbOF_PartAss"].Equals('1'))
                    {
                        cbOF_partAss.Checked = true;
                    }
                    if (HttpContext.Current.Request.Cookies["cookiesCriteres"]["cbOF_ComplAss"].Equals('1'))
                    {
                        cbOF_complAss.Checked = true;
                    }
                    if (HttpContext.Current.Request.Cookies["cookiesCriteres"]["cbOF_Commence"].Equals('1'))
                    {
                        cbOF_commence.Checked = true;
                    }
                    if (HttpContext.Current.Request.Cookies["cookiesCriteres"]["cbOF_NonCommence"].Equals('1'))
                    {
                        cbOF_nonCommence.Checked = true;
                    }
                    if (HttpContext.Current.Request.Cookies["cookiesCriteres"]["cbOF_QteP_QteR"].Equals('1'))
                    {
                        cbQteP_qteR.Checked = true;
                    }
                    if (HttpContext.Current.Request.Cookies["cookiesCriteres"]["cbOF_Dispo"].Equals('1'))
                    {
                        cbHU_Dispo.Checked = true;
                    }
                    if (HttpContext.Current.Request.Cookies["cookiesCriteres"]["cbOF_All"].Equals('1'))
                    {
                        cbHU_All.Checked = true;
                    }
                }
                else
                {
                    HttpContext.Current.Request.Cookies["cookiesCriteres"]["cbOF_Ouvert"] = "1";
                    HttpContext.Current.Request.Cookies["cookiesCriteres"]["cbOF_Libere"] = "1";
                    HttpContext.Current.Request.Cookies["cookiesCriteres"]["cbOF_NonAss"] = "1";
                    HttpContext.Current.Request.Cookies["cookiesCriteres"]["cbOF_PartAss"] = "1";
                    HttpContext.Current.Request.Cookies["cookiesCriteres"]["cbOF_ComplAss"] = "1";
                    HttpContext.Current.Request.Cookies["cookiesCriteres"]["cbOF_Commence"] = "1";
                    HttpContext.Current.Request.Cookies["cookiesCriteres"]["cbOF_NonCommence"] = "1";
                    HttpContext.Current.Request.Cookies["cookiesCriteres"]["cbOF_QteP_QteR"] = "1";
                    HttpContext.Current.Request.Cookies["cookiesCriteres"]["cbOF_Dispo"] = "0";
                    HttpContext.Current.Request.Cookies["cookiesCriteres"]["cbOF_All"] = "0";
                }

  2. #2
    Membre actif Avatar de Olivier P.
    Homme Profil pro
    Développeur Front-End chez un éditeur logiciel
    Inscrit en
    Octobre 2012
    Messages
    83
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur Front-End chez un éditeur logiciel
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2012
    Messages : 83
    Points : 206
    Points
    206
    Par défaut
    Bonjour,

    Il existe plusieurs mécanismes pour stocker des variables de session côté client et/ou serveur.
    La technique à utiliser va dépendre de plusieurs critères, dont notamment la quantité d'informations à conserver.

    Tu trouveras plus d'infos à ce lien, ainsi que des exemples de codes.

    http://msdn.microsoft.com/fr-fr/libr...v=vs.100).aspx
    MCTS Microsoft 70-536
    MCTS Microsoft 70-515

  3. #3
    Membre habitué
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2009
    Messages
    391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2009
    Messages : 391
    Points : 185
    Points
    185
    Par défaut
    Bonjour à toi. Dans un premier temps : Merci
    Je viens de lire ton lien.
    Apparemment les sessions ne me conviendrait pas forcement puisqu'il faudrait que l'information soit persistante même si je quitte le navigateur.
    J'ai lu aussi un truc sur les cookies :
    Mais je me pose quelques question dessus : http://msdn.microsoft.com/fr-fr/libr...(v=vs.80).aspx

    1) Quand c'est écrit : "La plupart des navigateurs prennent en charge des cookies jusqu'à 4 096 octets.". Est ce que ça signifie que c'est la limite de la somme des tailles de cookies ou c'est 4096octets par cookies ?

    2) Sinon, comment faire pour attribuer un cookie à un utilisateur ? Par exemple, monsieur X se connecte, est-ce que je peux faire :

    HttpContext.Current.Request.Cookies["X"]["metier"]

    pour récupérer son métier par exemple ? Alors que pour M. Y ça serait : HttpContext.Current.Request.Cookies["Y"]["metier"] ?

  4. #4
    Membre actif Avatar de Olivier P.
    Homme Profil pro
    Développeur Front-End chez un éditeur logiciel
    Inscrit en
    Octobre 2012
    Messages
    83
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur Front-End chez un éditeur logiciel
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2012
    Messages : 83
    Points : 206
    Points
    206
    Par défaut
    Non il s'agit bien de 4ko pour 1 cookie (par rapport à la phrase écrite).

    La limite en taille d'un cookie et en nombre de cookies gérés en même temps est définie par le navigateur.

    A ce lien, tu trouveras comment les créer, les lire et les supprimer.
    http://msdn.microsoft.com/fr-fr/libr...(v=vs.80).aspx
    MCTS Microsoft 70-536
    MCTS Microsoft 70-515

  5. #5
    Membre habitué
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2009
    Messages
    391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2009
    Messages : 391
    Points : 185
    Points
    185
    Par défaut
    Merci.

    D'après ce que je viens de comprendre en les manipulant un peu et ce que j'ai appris de ton lien. On ne peut pas personnalisé des cookies par utilisateur mais plutôt par navigateur. C'est pas trop grave pour mon problème. Merci encore

  6. #6
    Membre actif Avatar de Olivier P.
    Homme Profil pro
    Développeur Front-End chez un éditeur logiciel
    Inscrit en
    Octobre 2012
    Messages
    83
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur Front-End chez un éditeur logiciel
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2012
    Messages : 83
    Points : 206
    Points
    206
    Par défaut
    Ben, rien ne t'empêche de préfixer/suffixer le nom du cookie avec le username de l'utilisateur. Ainsi tu pourras créer un cookie par utilisateur.

    Attention tout de même à la limite de cookies du navigateur. Combien d'utilisateurs tu comptes avoir sur le même poste ?

    Je ne connais pas le besoin réel ni ce que tu vas mettre dans ton cookie, mais méfie toi des cookies utilisateurs, au niveau sécurité, c'est moyen. N'importe qui peut ouvrir et consulter un cookie (sauf à crypter le contenu, mais bon).

    Un cookie doit contenir des données non sensibles. Par exemple, le fait que l'utilisateur est connecté ou non, ses préférences de langue...
    MCTS Microsoft 70-536
    MCTS Microsoft 70-515

  7. #7
    Membre habitué
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2009
    Messages
    391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2009
    Messages : 391
    Points : 185
    Points
    185
    Par défaut
    Ah oui c'est vrai que si y'a pas beaucoup d'utilisateur je pourrais faire ça mais pour l'instant je vais rester sur un seul utilisateur ^^. Merci

    Sinon, j'ai fais ça :



    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
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    protected void loadCookies()
            {
                string cookiesCriteresCB = Request.Cookies["criteresCB"].Value;
                string[] tabCookiesCriteresCB = cookiesCriteresCB.Split(';');
     
     
     
                // si la valeur est à 1 on coche la checkbox, sinon on ne fait rien
                if (tabCookiesCriteresCB[0].Equals('1'))
                {
                    cbOF_ouvert.Checked = true;
                }
     
                if (tabCookiesCriteresCB[1].Equals('1'))
                {
                    cbOF_libere.Checked = true;
                }
     
                if (tabCookiesCriteresCB[2].Equals('1'))
                {
                    cbOF_nonAss.Checked = true;
                }
            }
     
            protected void saveCookies()
            {
                string etatCB_Criteres = "";
                if (cbOF_ouvert.Checked == true)
                {
                    etatCB_Criteres += "1;";
                }
                else
                {
                    etatCB_Criteres += "0;";
                }
     
                if (cbOF_libere.Checked == true)
                {
                    etatCB_Criteres += "1;";
                }
                else
                {
                    etatCB_Criteres += "0;";
                }
     
                if (cbOF_nonAss.Checked == true)
                {
                    etatCB_Criteres += "1;";
                }
                else
                {
                    etatCB_Criteres += "0;";
                }
     
                Request.Cookies["criteresCB"].Value = etatCB_Criteres;
     
            }
     
            protected void Page_Load(object sender, EventArgs e)
            {
     
                if (Request.Cookies["criteresCB"] != null)
                {
                    if (!Page.IsPostBack)
                    {
                        loadCookies();
                    }
                    else
                    {
                        saveCookies();
                    }
                }
                else
                {
                    // on créer les cookies
                    HttpCookie cookiesCriteresCB = new HttpCookie("criteresCB");
     
                    cookiesCriteresCB.Value = "1;1;0";
     
                    Response.Cookies.Add(cookiesCriteresCB);
                }
    Je ne comprends pas. Dans un premier temps, comme mon cookie n'existe pas je le crée avec la valeur "1;1;0". Si je vérifie dans mon navigateur il est bien créé comme ça.

    Ensuite, si le cookie existe, soit je le load car c'est la première ouverture de page, soit je le save pcq c'est un rappel de page. Cependant, quand je le save, il ne contient pas la chaine que je lui envoie (exemple : "1;0;1") mais il contient seulement "1".



    Quelqu'un a une idée svp ? Merci

    Edit : Bon apparemment c'est à cause des ";"...

Discussions similaires

  1. [Débutant] comment conserver les informations d'un utilisateur dans une variable?
    Par beaudelaire dans le forum ASP.NET
    Réponses: 1
    Dernier message: 28/12/2011, 07h31
  2. Récupérer les informations de l'utilisateur Windows en cours
    Par Thomas Lebrun dans le forum Contribuez
    Réponses: 0
    Dernier message: 29/12/2010, 01h13
  3. Récupérer les informations de l'utilisateur Windows en cours
    Par Thomas Lebrun dans le forum Contribuez
    Réponses: 0
    Dernier message: 28/12/2010, 23h50
  4. Conserver les informations sensibles - où ?
    Par MainMa dans le forum C#
    Réponses: 17
    Dernier message: 05/03/2009, 22h30
  5. Réponses: 4
    Dernier message: 13/05/2007, 00h24

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