OVH Cloud OVH Cloud

Cookie d'authentification

5 réponses
Avatar
Guillaume Bouzebra
Comment supprimer le cookie d'authentification lorsque l'utilisateur ferme le
navigateur ? (pour forcer le login à chaque fois)

J'ai mis dans la fonction Session_End de mon global.asax la ligne suivante:
FormAuthentication.SignOut();

Mais ça ne fonctionne pas....

5 réponses

Avatar
Pierre Lagarde [MS]
Bonjour,

Il faut mettre le deuxième paramètre à false de RedirectFromLoginPage.
FormsAuthentication.RedirectFromLoginPage(TextBox1.Text, false);

--
Pierre Lagarde
Microsoft France

Guillaume Bouzebra wrote:
Comment supprimer le cookie d'authentification lorsque l'utilisateur
ferme le navigateur ? (pour forcer le login à chaque fois)

J'ai mis dans la fonction Session_End de mon global.asax la ligne
suivante: FormAuthentication.SignOut();

Mais ça ne fonctionne pas....


Avatar
Guillaume Bouzebra
En fait j'aimerais que ça se passe à la fermeture du navigateur, donc je ne
vais pas faire un redirect une fois que le signout est fait, puisque le
signout sera exécuté à la fin de la session (ds global.asax).

Enfin, je comprends pas tout aux variables session .....

"Pierre Lagarde [MS]" a écrit :

Bonjour,

Il faut mettre le deuxième paramètre à false de RedirectFromLoginPage.
FormsAuthentication.RedirectFromLoginPage(TextBox1.Text, false);

--
Pierre Lagarde
Microsoft France

Guillaume Bouzebra wrote:
> Comment supprimer le cookie d'authentification lorsque l'utilisateur
> ferme le navigateur ? (pour forcer le login à chaque fois)
>
> J'ai mis dans la fonction Session_End de mon global.asax la ligne
> suivante: FormAuthentication.SignOut();
>
> Mais ça ne fonctionne pas....





Avatar
Guillaume Bouzebra
En fait ce que je vais pour mon application, c'est cela:
L'utilisateur est obligé de se logger lorsqu'il lance l'application. A ce
moment je stocke son nom dans une variable session et je l'affiche dans ma
bannière.
Lorsque l'utilisateur ferme la fenêtre, il est automatiquement déconnecté et
sera obligé de se relogger au prochain lancement de l'application.
Mias en plus, je prévois une option Connexion automatique lors du login, qui
connectera l'utilisateur automatiquement à chaque lancement de l'application.
(pour ça je dois bien utiliser un cookie persistant ?). Maiss à ce moment là,
il ne passe plus par la procédure de login et donc je ne récupère pas les
infos de cet utilisateur dans la base et donc je n'ai rien à mettre dans la
variable de session (normalement je mets le nom et le mail).

J'espère que ces précisions aideront à répondre à ma première question..

Merci d'avance

"Pierre Lagarde [MS]" a écrit :

Bonjour,

Il faut mettre le deuxième paramètre à false de RedirectFromLoginPage.
FormsAuthentication.RedirectFromLoginPage(TextBox1.Text, false);

--
Pierre Lagarde
Microsoft France

Guillaume Bouzebra wrote:
> Comment supprimer le cookie d'authentification lorsque l'utilisateur
> ferme le navigateur ? (pour forcer le login à chaque fois)
>
> J'ai mis dans la fonction Session_End de mon global.asax la ligne
> suivante: FormAuthentication.SignOut();
>
> Mais ça ne fonctionne pas....





Avatar
Guillaume Bouzebra
Bon j'ai réglé mon problème. Mais si l'utilisateur coche "Connexion
automatique" (donc persistent=true) puis qu'il ferme le browser, puis qu'il
le relance, il ne passe plus par la page de login. Et là j'aimerais afficher
son nom complet et son email, qui normalement sont récupérés dans la BD lors
du login et stockés dans une variable de session. Comment puis je régler ce
problème ? Est-ce qu'il y aurait moyen de stocker le nom et l'email dans le
cookie d'authentification et de les récupérer ?

"Pierre Lagarde [MS]" a écrit :

Bonjour,

Il faut mettre le deuxième paramètre à false de RedirectFromLoginPage.
FormsAuthentication.RedirectFromLoginPage(TextBox1.Text, false);

--
Pierre Lagarde
Microsoft France

Guillaume Bouzebra wrote:
> Comment supprimer le cookie d'authentification lorsque l'utilisateur
> ferme le navigateur ? (pour forcer le login à chaque fois)
>
> J'ai mis dans la fonction Session_End de mon global.asax la ligne
> suivante: FormAuthentication.SignOut();
>
> Mais ça ne fonctionne pas....





Avatar
Messenger of the red snake mountain
"Guillaume Bouzebra" wrote in message
news:
Bon j'ai réglé mon problème. Mais si l'utilisateur coche "Connexion
automatique" (donc persistent=true) puis qu'il ferme le browser, puis qu'il
le relance, il ne passe plus par la page de login. Et là j'aimerais afficher
son nom complet et son email, qui normalement sont récupérés dans la BD lors
du login et stockés dans une variable de session. Comment puis je régler ce
problème ? Est-ce qu'il y aurait moyen de stocker le nom et l'email dans le
cookie d'authentification et de les récupérer ?



Bonsoir,

Il y a des mélanges. Les informations stockées dans le cookie, lui même
stocké sur le client (contrairement à ce qui a été écrit dans un récent message)
peuvent être déclarées comme persistantes (en précisant un 'délai') et rester
accessibles même après le redémarrage du navigateur, ou non persistantes,
et le cookie est détruit avec la fermeture du navigateur.

Les informations associées à une session sont stockées sur le serveur. Le
serveur créé une session lors de la première requête d'un utilisateur. Cette
session reste 'active' tant qu'un délai d'inactivité n'est pas dépassé.

Ce laps de temps peut être personnalisé, il s'agit du 'timeout'.

Lorsque le timeout est atteint, la session est marquée comme inactive. Elle
n'est pas pour autant 'supprimée'. Le serveur gère lui-même selon différents
mécanismes internes le moment précis où il supprimera (appel de la méthode
Session_End) les informations relatives à la session. Ce point est très important,
il ne suffit pas d'attendre le timeout pour que la session_end soit executée!

Maintenant, lorsque vous créez un cookie persistant, le pragmatisme exige
de s'en tenir là: un cookie est disponible après redémarrage du navigateur.

EN AUCUN CAS la session est restée disponible sur le serveur!

Ce cookie détient une information-clé (à vous de construire votre mécanisme
ou d'utiliser celui de dotnet) fournie lors de la première requête d'une session
ultérieure. Une nouvelle session est donc créée, et elle est 'vide'.

C'est au développeur de construire une logique métier, qui TRES basiquement
s'apparenterait à cela:

SI cookie-present ET cookie-valide ALORS

recupérer-infos-cookie
déduire-l'utilisateur-à-partir-des-infos-de-cookie
-> associer-les-variables-de-session

SINON

SI formulaire-soumis ET formulaire-valide ALORS
récupérer-infos-formulaire
déduire-utilisateur-à-partir-des-infos-formulaire
-> associer-les-variables-de-session
SINON
afficher-formulaire
FIN

FIN

Comme vous pouvez le constater, 'associer-les-variables-session'
apparaît que l'on soit dans une authentification implicite ou
dans une authentification explicite.

Retenez bien cela: le cookie ne contient pas la session, le cookie
ne contient qu'une information vous permettant de recréer une session
correspondant à l'utilisateur et de ne pas avoir à lui demander son
login et mot de passe à nouveau.

.antoine