Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Authentification Form et persistence

3 réponses
Avatar
Delf
Bonsoir.

J'ai fait un UserControl pour gérer l'authentification Forms avec
chiffrement du mot de passe via Javascript : UcLogin.acsx.

Mon contrôle dispose de 2 events : OnAuthentification et OnLoginAction.

OnAuthentification : méthode à exécuter pour identifier l'utilisateur,

OnLoginAction. : méthode à exécuter si l'utilisateur est identifier
(initier son contexte de session, etc.).

Ma page Login.ascx inclu UcLogin.acsx.

UcLogin.acsx propose un CheckBox pour la persistence de
l'authentification (Cookies).

Mon problème : l'utilisateur renseigne le formulaire et coche la case
"Persistence". Il ferme le navigateur, le réouvre et accède de nouveau
à la page Login.aspx : il est automatiquement identifié grâce au Cookie
mais OnLoginAction n'est pas appelé, et est redirigé vers la page
Default.aspx.

Comment faire l'appel OnLoginAction via UcLogin.ascx ?

J'ai essayé via un HttpModule, en utilisant un évènement static mais je
ne m'en sort pas...

Des idées ? Merci.

NB : si nécessaire je peux fournir la solution TEST VS2005, .NET 2.0.

3 réponses

Avatar
Delf
On 22 jan, 20:20, Delf wrote:

J'ai fait un UserControl pour gérer l'authentification Forms avec
chiffrement du mot de passe via Javascript : UcLogin.acsx.

Mon contrôle dispose de 2 events : OnAuthentification et OnLoginAction.

OnAuthentification : méthode à exécuter pour identifier l'utilisate ur,

OnLoginAction. : méthode à exécuter si l'utilisateur est identifier
(initier son contexte de session, etc.).



Je suis revenu sur ce problème, en fait, au lieu d'utiliser mon event
perso, il faut passer par le Global.asax et sa méthode :

public void Application_AuthenticateRequest(object sender, EventArgs
e)

Exemple :

public void Application_AuthenticateRequest(object sender, EventArgs
e)
{
IPrincipal user = HttpContext.Current.User;

if (user != null)
{
if (string.Compare(user.Identity.AuthenticationType, "Forms",
true) == 0)
{
// Stockage session

HttpContext.Current.Items.Add("User.Name", user.Identity.Name);
HttpContext.Current.Items.Add("User.Guid", Guid.NewGuid
().ToString());
HttpContext.Current.Items.Add("User.AuthDateTime",
DateTime.Now);
}
}

Ma page Login.ascx inclu UcLogin.acsx.

UcLogin.acsx propose un CheckBox pour la persistence de
l'authentification (Cookies).

Mon problème : l'utilisateur renseigne le formulaire et coche la case
"Persistence". Il ferme le navigateur, le réouvre et accède de nouvea u
à la page Login.aspx : il est automatiquement identifié grâce au Co okie
mais OnLoginAction n'est pas appelé, et est redirigé vers la page
Default.aspx.



Avec cette méthode, plus de problème. L'utilisateur ferme son browser,
le relance, il est automatiquement identifié via son cookie et
Application_AuthenticateRequest() est invoquée. Penser à utiliser les
deux conditions IF.

--
Delf
Avatar
Jérémy Jeanson
Bonjour Delf,

Je ne voudrais pas te casser le moral Delf, mais as tu remarqué que le
framwork .net contenait déjà le néscessaire pour utiliser un cookie avec
l'authetification Form.

Cela se trouve dans l'objet FormsAuthentication

Documentation MSDN :
http://msdn.microsoft.com/fr-fr/library/system.web.security.formsauthentication.setauthcookie(VS.80).aspx

il a une méthode FormsAuthentication.SetAuthCookie (String, Boolean) qui
ouvre la session de l'utilsiateur et qui si on lui passe un boolean à
true, garde un cookie.
--
Jérémy JEANSON
MCP
http://www.jjeanson.fr
Avatar
Delf
Après mûre réflexion, Jérémy Jeanson a écrit :

Je ne voudrais pas te casser le moral Delf, mais as tu remarqué que le
framwork .net contenait déjà le néscessaire pour utiliser un cookie avec
l'authetification Form.



J'utilise l'authentification Form mais j'évite d'utiliser les Cookies
pour stocker des informations. Je n'aime pas savoir les données côté
client...

Cela se trouve dans l'objet FormsAuthentication

Documentation MSDN :
http://msdn.microsoft.com/fr-fr/library/system.web.security.formsauthentication.setauthcookie(VS.80).aspx

il a une méthode FormsAuthentication.SetAuthCookie (String, Boolean) qui
ouvre la session de l'utilsiateur et qui si on lui passe un boolean à true,
garde un cookie.



Mon problème était de mettre en place la session utilisateur via la
persistence du cookie d'authentification.

Je n'utilisais pas la bonne méthode avec mon UserControl (qui se base
sur l'authentification Form mais qui fait plus).

Avec la méthode notée ci-dessus, plus de problème à par que je n'ai pas
accès à l'objet Session dedans, obligé de passer par le Cache (avec
expiration sur le timeout défini dans le web.config) et d'une manière,
ça m'arrange (nombre d'utilisateurs, visualiser leurs données, les
modifier à la volée :p)

Merci.

--
Delf