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

ASP.NET Discussion :

Problème méthode FormsAuthentication


Sujet :

ASP.NET

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    249
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 249
    Par défaut 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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : 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
        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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 !

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    249
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 249
    Par défaut
    Je relance ce problème. J'ai enquêté et j'ai isolé le problème.

    J'ai créé la page http://www.carnet-de-vol.fr/clear.aspx qui a pour code :

    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
    using System;
    using System.Collections;
    using System.Configuration;
    using System.Data;
    using System.Linq;
    using System.Web;
    using System.Web.Security;
    using System.Web.UI;
    using System.Web.UI.HtmlControls;
    using System.Web.UI.WebControls;
    using System.Web.UI.WebControls.WebParts;
    using System.Xml.Linq;
     
    public partial class clear : System.Web.UI.Page
    {
        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é
                Response.Write(FormsAuthentication.Decrypt(authCookie.Value).Name);
            }
            else
            {
                // L'utilisateur n'est pas connecté
                Response.Write("Erreur");
            }
        }
        protected void Button1_Click(object sender, EventArgs e)
        {
            FormsAuthentication.SetAuthCookie("test", false);
        }
    }
    Lors du clic sur le bouton, le message affiché est "Erreur". Cela signifit que le Cookie contenant en théorie "test" est vide. Le problème est donc l'écriture dans ce cookie qui n'a pas lieu.

    Cette page fonctionne très bien en local, la valeur renvoyée est test... n'y a t-il pas quelquechose à configurer sur le serveur web ?

    Merci d'avance

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    249
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 249
    Par défaut
    C'est bon j'ai résolu le problème grâce à Google. J'ai trouvé ce blog anglais qui dont l'auteur avait le même problème qu'il a résolu :

    ASP .NET 2.0 forms authentication doesn't work after deployment
    I was having trouble with getting my application to authenticate users when I deployed it to my host server. Typical story, everything worked fine when on my local development machine, including using the connection string to the host's sql server. When deployed on the host, the login form would show and when I enter the credentials, the form would pass back to the default page, not displaying any error. It looks as though the user is authenticated, but the LoginView control doesn't change as it does on my local machine. WHen I try and access a restricted part of the web site, I am (appropriately) directed to the login form but every time I enter my credentials it stays on the login form. So, what's going on?

    As it turns out, the forms element of the authentication section of the web.config has an attribute called "path" that, if set (along with the cookieless="AutoDetect|UseCookies"), has to relate to the path on the host. Because I was hosting it locally, path="/MySite" worked because of how it was set up on my local machine. It didn't work on the host as I am not certain how they have it set up. I only get to see my own node in the tree. So, the fix was to not include the path attribute, leaving it at the default "/".
    Donc juste en ajoutant path="/" dans le web.config, tout fonctionne !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Problème méthode Imaging.GetListItems
    Par kince dans le forum SharePoint
    Réponses: 6
    Dernier message: 01/06/2007, 20h27
  2. VBA-E Problème méthode .find
    Par popo68 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 03/01/2007, 10h14
  3. [EJB2.1 Entity] Problème méthode findAll() avec Jonas 4.7.4
    Par mixouille dans le forum Java EE
    Réponses: 1
    Dernier message: 28/07/2006, 12h06
  4. Problème méthode NUM
    Par Pfeffer dans le forum 4D
    Réponses: 2
    Dernier message: 10/07/2006, 09h17

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