OVH Cloud OVH Cloud

Variables de session

3 réponses
Avatar
Guillaume Bouzebra
J'ai une authentification par forms pour mon application.
Donc lorsque je me logge, un cookie se met sur mon pc pendant 30 min (valeur
par défaut). Une fois l'utilisateur loggé, je stocke le nom de l'utilisateur
et son adresse email dans des variables de session en faisant:
Session["user"] = nom_user;
Session["mail"] = mail_user;

Mais lorsque je ferme le navigateur et que je le relance, je ne dois plus me
loggé (le cookie est toujours là puisque moins de 30 min) mais mes variables
session ne sont plus là. Je suppose que c'est normal ? Est-ce du au fait que
j'utilise le paramètre "InProc" dans SessionState du web.config et que donc,
une fois le processus (le navigateur) terminé, tout est effacé ?
Comment puis-je faire pour garder mes données de session ?

Merci d'avance

3 réponses

Avatar
Mitsuru FURUTA [Ms]
Bonjour,

Il y a quelques confusions me semble-t-il.

- Le cookie ne se met pas sur le pc pendant 30 minutes.
- Le cookie se met sur le serveur pendant 30 minutes d'inactivité.

Le principe:

- lors de la première requête au serveur, aucun cookie.
- le serveur comprend alors que c'est un démarrage de session et crée le
cookie de session qu'il ajoute aux entêtes http dans la réponse au
navigateur.
- le navigateur, qui reçoit ce cookie le stock pour une durée indéfinie. Le
navigateur ne connait pas la durée du timeout de la session serveur. Dans
les futures requêtes vers le même serveur bien évidemment, le navigateur
renvoie ces valeurs, ainsi commence un échange entre le serveur et le client
jusqu'à fermeture du navigateur.

Dans ton cas précis, la fermeture du navigateur ne ferme pas la session
serveur (puisqu'il n'en ait pas notifié) mais la valeur du cookie est perdu
coté client. Lors d'un appel ultérieur, il faut se loguer à nouveau, ce qui
visiblement ne fonctionne pas. Le problème est là !

Attention de ne pas utiliser FormsAuthentication.RedirectFromLoginPage("",
persistentCookie) avec le paramètre persistentCookie à "true". Sinon on
rentre alors dans une stratégie de cookie client persistant, ce qui est
différent.

Bonne continuation,

Mitsuru FURUTA [Microsoft FRANCE]

"Guillaume Bouzebra" wrote in
message news:
J'ai une authentification par forms pour mon application.
Donc lorsque je me logge, un cookie se met sur mon pc pendant 30 min


(valeur
par défaut). Une fois l'utilisateur loggé, je stocke le nom de


l'utilisateur
et son adresse email dans des variables de session en faisant:
Session["user"] = nom_user;
Session["mail"] = mail_user;

Mais lorsque je ferme le navigateur et que je le relance, je ne dois plus


me
loggé (le cookie est toujours là puisque moins de 30 min) mais mes


variables
session ne sont plus là. Je suppose que c'est normal ? Est-ce du au fait


que
j'utilise le paramètre "InProc" dans SessionState du web.config et que


donc,
une fois le processus (le navigateur) terminé, tout est effacé ?
Comment puis-je faire pour garder mes données de session ?

Merci d'avance



Avatar
Guillaume Bouzebra
Ok, merci pour ses renseignements. Mais en fait, je vais intégrer une partie
connexion automatique donc je vais utiliser les cookies persistant. Mais j'ai
pas très bien compris ce que je dois faire pour garder mes variables session.
Je peux les stocker dans le cookie client ?

"Mitsuru FURUTA [Ms]" a écrit :

Bonjour,

Il y a quelques confusions me semble-t-il.

- Le cookie ne se met pas sur le pc pendant 30 minutes.
- Le cookie se met sur le serveur pendant 30 minutes d'inactivité.

Le principe:

- lors de la première requête au serveur, aucun cookie.
- le serveur comprend alors que c'est un démarrage de session et crée le
cookie de session qu'il ajoute aux entêtes http dans la réponse au
navigateur.
- le navigateur, qui reçoit ce cookie le stock pour une durée indéfinie. Le
navigateur ne connait pas la durée du timeout de la session serveur. Dans
les futures requêtes vers le même serveur bien évidemment, le navigateur
renvoie ces valeurs, ainsi commence un échange entre le serveur et le client
jusqu'à fermeture du navigateur.

Dans ton cas précis, la fermeture du navigateur ne ferme pas la session
serveur (puisqu'il n'en ait pas notifié) mais la valeur du cookie est perdu
coté client. Lors d'un appel ultérieur, il faut se loguer à nouveau, ce qui
visiblement ne fonctionne pas. Le problème est là !

Attention de ne pas utiliser FormsAuthentication.RedirectFromLoginPage("",
persistentCookie) avec le paramètre persistentCookie à "true". Sinon on
rentre alors dans une stratégie de cookie client persistant, ce qui est
différent.

Bonne continuation,

Mitsuru FURUTA [Microsoft FRANCE]

"Guillaume Bouzebra" wrote in
message news:
> J'ai une authentification par forms pour mon application.
> Donc lorsque je me logge, un cookie se met sur mon pc pendant 30 min
(valeur
> par défaut). Une fois l'utilisateur loggé, je stocke le nom de
l'utilisateur
> et son adresse email dans des variables de session en faisant:
> Session["user"] = nom_user;
> Session["mail"] = mail_user;
>
> Mais lorsque je ferme le navigateur et que je le relance, je ne dois plus
me
> loggé (le cookie est toujours là puisque moins de 30 min) mais mes
variables
> session ne sont plus là. Je suppose que c'est normal ? Est-ce du au fait
que
> j'utilise le paramètre "InProc" dans SessionState du web.config et que
donc,
> une fois le processus (le navigateur) terminé, tout est effacé ?
> Comment puis-je faire pour garder mes données de session ?
>
> Merci d'avance
>





Avatar
Guillaume Bouzebra
Justement pour les cookie persistant, je compte donc utiliser une option de
connexion automatique mais aussi la possibilité de se déconnecter. comment
ferais-je à e moment là pour supprimer le cookie d'authentification si j'ai
fais un persistent=true ?

"Mitsuru FURUTA [Ms]" a écrit :

Bonjour,

Il y a quelques confusions me semble-t-il.

- Le cookie ne se met pas sur le pc pendant 30 minutes.
- Le cookie se met sur le serveur pendant 30 minutes d'inactivité.

Le principe:

- lors de la première requête au serveur, aucun cookie.
- le serveur comprend alors que c'est un démarrage de session et crée le
cookie de session qu'il ajoute aux entêtes http dans la réponse au
navigateur.
- le navigateur, qui reçoit ce cookie le stock pour une durée indéfinie. Le
navigateur ne connait pas la durée du timeout de la session serveur. Dans
les futures requêtes vers le même serveur bien évidemment, le navigateur
renvoie ces valeurs, ainsi commence un échange entre le serveur et le client
jusqu'à fermeture du navigateur.

Dans ton cas précis, la fermeture du navigateur ne ferme pas la session
serveur (puisqu'il n'en ait pas notifié) mais la valeur du cookie est perdu
coté client. Lors d'un appel ultérieur, il faut se loguer à nouveau, ce qui
visiblement ne fonctionne pas. Le problème est là !

Attention de ne pas utiliser FormsAuthentication.RedirectFromLoginPage("",
persistentCookie) avec le paramètre persistentCookie à "true". Sinon on
rentre alors dans une stratégie de cookie client persistant, ce qui est
différent.

Bonne continuation,

Mitsuru FURUTA [Microsoft FRANCE]

"Guillaume Bouzebra" wrote in
message news:
> J'ai une authentification par forms pour mon application.
> Donc lorsque je me logge, un cookie se met sur mon pc pendant 30 min
(valeur
> par défaut). Une fois l'utilisateur loggé, je stocke le nom de
l'utilisateur
> et son adresse email dans des variables de session en faisant:
> Session["user"] = nom_user;
> Session["mail"] = mail_user;
>
> Mais lorsque je ferme le navigateur et que je le relance, je ne dois plus
me
> loggé (le cookie est toujours là puisque moins de 30 min) mais mes
variables
> session ne sont plus là. Je suppose que c'est normal ? Est-ce du au fait
que
> j'utilise le paramètre "InProc" dans SessionState du web.config et que
donc,
> une fois le processus (le navigateur) terminé, tout est effacé ?
> Comment puis-je faire pour garder mes données de session ?
>
> Merci d'avance
>