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 :

Authentification manuelle par Login [Fait]


Sujet :

ASP.NET

  1. #1
    Membre chevronné
    Avatar de kmaniche
    Inscrit en
    Janvier 2006
    Messages
    1 717
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 717
    Points : 1 884
    Points
    1 884
    Par défaut Authentification manuelle par Login
    Bonjour

    Sur un formulaire asp.net, contenant deux zone de texte, une pour le "Login" et l'autre pour le "Mot de passe", et un Bouton pour se connecter.

    Sur l'evenement OnClick, je veux reproduire la connexion de l'utilisateur comme le fait le controle Login à s'avoir :
    1- Vérifier si le Nom et le mot de passe existent dans la base.
    2- Si oui, je charge la page d'acceuil.


    Merci d'avance pour votre précieuse aide !!

  2. #2
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 753
    Points
    39 753
    Par défaut
    Le code suivant permet d'authentifier "manuellement" un utilisateur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
            private void LoginUser(string username, bool isPersistent, int timeOut)
            {
                FormsAuthenticationTicket ticket = new FormsAuthenticationTicket(username, isPersistent, timeOut);
                string encTicket = FormsAuthentication.Encrypt(ticket);
                Response.Cookies.Add(new HttpCookie(FormsAuthentication.FormsCookieName, encTicket));
                Response.Redirect(FormsAuthentication.GetRedirectUrl(username, isPersistent));
            }
    Pour ce qui est de la vérification du login/password, ça ne présente pas beaucoup de difficulté il me semble... il suffit de faire une requête sur la BDD

  3. #3
    Membre chevronné
    Avatar de kmaniche
    Inscrit en
    Janvier 2006
    Messages
    1 717
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 717
    Points : 1 884
    Points
    1 884
    Par défaut
    Pour simplifier la tache, je vais utiliser la même base de données SqlServer livrée avec le produit (base par défaut).

    Maintenant, l'utilisateur saisie sont Login et Mot de passe, je dois d'abord verifier avec la base, et par la suite le faire rediriger vers la page d'acceuil.

    Tout cela, après que cet utilisateur clique sur un bouton ?

    Merci pour la réponse ...

  4. #4
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 753
    Points
    39 753

  5. #5
    Membre chevronné
    Avatar de kmaniche
    Inscrit en
    Janvier 2006
    Messages
    1 717
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 717
    Points : 1 884
    Points
    1 884
    Par défaut
    Je cherche à reproduire le code qu'execute le bouton connexion du controle Login.

    Est ce que c'est celui là :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    public void Login_OnClick(object sender, EventArgs args)
    {
       if (Membership.ValidateUser(UsernameTextbox.Text, PasswordTextbox.Text))
          FormsAuthentication.RedirectFromLoginPage(UsernameTextbox.Text, NotPublicCheckBox.Checked);
       else
         Msg.Text = "Login failed. Please check your user name and password and try again.";
    }
    Comment faire, si le login et le mot de passe sont correcte, de rediriger l'utilisateur vers la page d'acceuil sépciale pour les utilisateurs connectés (accusr.aspx)

    Merci

  6. #6
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 753
    Points
    39 753
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Response.Redirect("~/accusr.aspx")

  7. #7
    Membre chevronné
    Avatar de kmaniche
    Inscrit en
    Janvier 2006
    Messages
    1 717
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 717
    Points : 1 884
    Points
    1 884
    Par défaut
    Donc, le code executer par le bouton connexion du controle Login est bien le suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    public void Login_OnClick(object sender, EventArgs args)
    {
       if (Membership.ValidateUser(UsernameTextbox.Text, PasswordTextbox.Text))
          FormsAuthentication.RedirectFromLoginPage(UsernameTextbox.Text, NotPublicCheckBox.Checked);
       else
         Msg.Text = "Login failed. Please check your user name and password and try again.";
    }

    Est-ce que vous pouvez me le confirmer ?

  8. #8
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 753
    Points
    39 753
    Par défaut
    Pas tout à fait
    Si tu regardes la doc de la méthode RedirectFromLoginPage, tu verras qu'en fait ça renvoie sur la page indiquée par le paramètre ReturnUrl, ou l'URL par défaut si ReturnUrl n'est pas définie. Donc tu peux peut-être bidouiller en définissant ReturnUrl toi-même :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    public void Login_OnClick(object sender, EventArgs args)
    {
       if (Membership.ValidateUser(UsernameTextbox.Text, PasswordTextbox.Text))
       {
          Request.QueryString["ReturnUrl"] = "accusr.aspx";
          FormsAuthentication.RedirectFromLoginPage(UsernameTextbox.Text, NotPublicCheckBox.Checked);
       }
       else
         Msg.Text = "Login failed. Please check your user name and password and try again.";
    }
    Mais je te promets pas que ça marche...

  9. #9
    Membre chevronné
    Avatar de kmaniche
    Inscrit en
    Janvier 2006
    Messages
    1 717
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 717
    Points : 1 884
    Points
    1 884
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Request.QueryString["ReturnUrl"] = "accusr.aspx";
    Détails de l'exception: System.NotSupportedException: La collection est en lecture seule.
    ??

  10. #10
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 753
    Points
    39 753
    Par défaut
    C'est un peu ce que je craignais... Mais bon, c'est pas vraiment étonnant qu'on puisse pas modifier les données de la requête

    Bon, je sais pas exactement quelle est la bonne méthode, mais en regardant avec Reflector le code du contrôle Login, je vois ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
                ...
                this.OnAuthenticate(args2);
                if (args2.Authenticated)
                {
                    FormsAuthentication.SetAuthCookie(this.UserNameInternal, this.RememberMeSet);
                    this.OnLoggedIn(EventArgs.Empty);
                    this.Page.Response.Redirect(this.GetRedirectUrl(), false);
                }
                ...
    Donc en gros, il faut appeler SetAuthCookie pour donner à l'utilisateur le cookie d'authentification, et le rediriger vers la page que tu veux avec Response.Redirect

  11. #11
    Membre chevronné
    Avatar de kmaniche
    Inscrit en
    Janvier 2006
    Messages
    1 717
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 717
    Points : 1 884
    Points
    1 884
    Par défaut
    Au final, Mon bouton de connexion execute le code suivant :

    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
     
        protected void btnAction_Click(object sender, EventArgs e)
        {
            String usrName = txtUsr.Text,
                   usrPass = txtPswrd.Text;
     
            // Effacement du Logni et le mot de passe du composant
               txtUsr.Text   = "";
               txtPswrd.Text = ""; 
            // Vérification du Login et le mot de passe
               Msg.Text    = "";   
               Msg.Visible = false ;
     
               if (Membership.ValidateUser(usrName, usrPass))
                   FormsAuthentication.RedirectFromLoginPage(txtUsr.Text, false);
               else
               {
                   Msg.Visible = true;
                   Msg.Text = "Votre authentification a échouée. Veuillez saisir un 'login' et un 'mot de passe' valide.";
               }
        }
    Maintenant sur une autre page, je cherche à récupérer le nom de l'utilisateur en cours, j'ai fait :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
            Label1.Text = User.Identity.Name.ToString();
    Mais ça ne marche pas !! Le label est toujours vide ?

  12. #12
    Membre chevronné
    Avatar de kmaniche
    Inscrit en
    Janvier 2006
    Messages
    1 717
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 717
    Points : 1 884
    Points
    1 884
    Par défaut
    Quand j'utilise un controle LOGIN l'instruction suivant marche sans problème, je récuperts bien le nom de l'utilisateur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Label1.Text = User.Identity.Name.ToString();

    Mais sans le controle LOGIN, le label n'affiche rien,

    Est ce que le controle login utilise une variable de session ?

  13. #13
    Membre chevronné
    Avatar de kmaniche
    Inscrit en
    Janvier 2006
    Messages
    1 717
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 717
    Points : 1 884
    Points
    1 884
    Par défaut
    C bon ça marche

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

Discussions similaires

  1. Authentification par login et mot de passe
    Par archer dans le forum Services Web
    Réponses: 1
    Dernier message: 20/06/2011, 18h11
  2. authentification squid par login et mdp
    Par berok37 dans le forum Réseau
    Réponses: 0
    Dernier message: 18/03/2011, 21h44
  3. [login] Authentification manuel
    Par anthyme dans le forum ASP.NET
    Réponses: 3
    Dernier message: 02/04/2008, 01h05
  4. Réponses: 3
    Dernier message: 08/06/2006, 17h38
  5. [MFC] afficher une page web accessible par login
    Par hiko-seijuro dans le forum MFC
    Réponses: 6
    Dernier message: 31/08/2005, 18h32

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