Problème méthode FormsAuthentication
Bonjour à tous,
J'utilise la méthode FormsAuthentication pour mes connexion sur mon site web ASP.net C#. Ca fonctionne parfaitement lors de l'exécution en local avec le serveur intégré de Visual Web Developper 2008.
Mais dès que je le passe en ligne, cela plante. Je m'explique :
Dans mon web.config j'ai mis :
Code:
1 2 3 4
| <authentication mode="Forms">
<forms name="CDV" loginUrl="Default.aspx" protection="All" defaultUrl="/" timeout="30">
</forms>
</authentication> |
Sur Default.aspx, où l'utilisateur s'identifie, lors du clic sur le bouton "Connexion" :
Code:
1 2 3 4 5 6 7 8 9
| if (codes.UTILISATEUR_Connexion_Autorisee(Connexion.UserName, Connexion.Password))
{
FormsAuthentication.SetAuthCookie(codes.UTILISATEUR_ID(Connexion.UserName, Connexion.Password), Connexion.RememberMeSet);
Response.Redirect("Carnet.aspx");
}
else
{
//Echec
} |
Je confirme que la procédure codes.UTILISATEUR_ID fonctionne bien, j'ai vérifié sa valeur en sortie.
Ensuite, dans Carnet.aspx, page où est redirigé l'utilisateur après connexion :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| public string id_user = "-1";
protected void Page_Load(object sender, EventArgs e)
{
string cookieName = FormsAuthentication.FormsCookieName;
HttpCookie authCookie = Request.Cookies[cookieName];
if (authCookie != null)
{
// L'utilisateur est déjà connecté
id_user = FormsAuthentication.Decrypt(authCookie.Value).Name;
}
else
{
// L'utilisateur n'est pas connecté
FormsAuthentication.SignOut();
FormsAuthentication.RedirectToLoginPage();
}
} |
Ainsi, lorsque je me connecte en local, ca fonctionne. Mais dès que je passe le site en ligne, ca plante, et après connexion, je suis redirigé automatiquement sur Default.aspx?ReturnUrl=%2fCarnet.aspx
J'en déduis donc qu'il n'a pas réussi à lire le cookie dans la page Carnet.aspx, et du coup il effectue le
Code:
1 2 3
| // L'utilisateur n'est pas connecté
FormsAuthentication.SignOut();
FormsAuthentication.RedirectToLoginPage(); |
Ou alors, il plante lors de l'écriture du cookie dans Default.aspx :
Code:
FormsAuthentication.SetAuthCookie(codes.UTILISATEUR_ID(Connexion.UserName, Connexion.Password), Connexion.RememberMeSet);
Ma question : pourquoi ça ? Alors que ca fonctionne en local... ?
Merci d'avance de votre aide ! :)