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 C# SqlServer2005


Sujet :

ASP.NET

  1. #1
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2011
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2011
    Messages : 21
    Par défaut Authentification C# SqlServer2005
    Bonjour
    j'ai une table Gestionnaire(idGest,Login,Pwd,Role)..je cherche a réaliser une authentification selon le rôle de l'utilisateur s'il est "admin" une page "Accueil_admin" s'ouvre sinon la page "accueil" s'ouvre

    voila mon Web.Config:
    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
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    <?xml version="1.0"?>
     
    <!--
      For more information on how to configure your ASP.NET application, please visit
      http://go.microsoft.com/fwlink/?LinkId=169433
      -->
     
    <configuration>
      <connectionStrings>
        <add name="ApplicationServices" connectionString="data source=.\SQLEXPRESS;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|\aspnetdb.mdf;User Instance=true"
          providerName="System.Data.SqlClient" />
     
     
        <add name="bdSPRConnectionString24" connectionString="Data Source=amine;Initial Catalog=bdSPR;Integrated Security=True"
          providerName="System.Data.SqlClient" />
     
     
      </connectionStrings>
     
      <system.web>
        <compilation debug="true" targetFramework="4.0" />
     
        <authentication mode="Forms">
          <forms loginUrl="~/Account/Login.aspx" timeout="2880" />
        </authentication>
     
        <!-- par défaut aucun utilisateur non authentifié ne peut accéder au site -->
        <authorization>
          <deny users="?"/>
        </authorization>
     
     
        <membership>
          <providers>
            <clear/>
            <add name="AspNetSqlMembershipProvider" type="System.Web.Security.SqlMembershipProvider" connectionStringName="ApplicationServices"
                 enablePasswordRetrieval="false" enablePasswordReset="true" requiresQuestionAndAnswer="false" requiresUniqueEmail="false"
                 maxInvalidPasswordAttempts="5" minRequiredPasswordLength="6" minRequiredNonalphanumericCharacters="0" passwordAttemptWindow="10"
                 applicationName="/" />
          </providers>
        </membership>
     
        <profile>
          <providers>
            <clear/>
            <add name="AspNetSqlProfileProvider" type="System.Web.Profile.SqlProfileProvider" connectionStringName="ApplicationServices" applicationName="/"/>
          </providers>
        </profile>
     
        <roleManager enabled="false">
          <providers>
            <clear/>
            <add name="AspNetSqlRoleProvider" type="System.Web.Security.SqlRoleProvider" connectionStringName="ApplicationServices" applicationName="/" />
            <add name="AspNetWindowsTokenRoleProvider" type="System.Web.Security.WindowsTokenRoleProvider" applicationName="/" />
          </providers>
        </roleManager>
     
      </system.web>
     
      <location path="~/Account/WF_Accueil_Admin.aspx">
        <system.web>
          <!-- pour la Page1.aspx on autorise les roles Admins et Members et on refuse tous les autres -->
          <authorization>
            <allow roles="Admin"/>
            <deny users="*"/>
          </authorization>
        </system.web>
      </location>
     
      <location path="~/Account/WF_Accueil.aspx">
        <system.web>
          <!-- pour la Page2.aspx on autorise le role Admins et on refuse tous les autres -->
          <authorization>
            <allow roles="user"/>
            <deny users="*"/>
          </authorization>
        </system.web>
      </location>
      <system.webServer>
         <modules runAllManagedModulesForAllRequests="true"/>
      </system.webServer>
    </configuration>
    Login.aspx
    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
    <table>
       <tr>
          <td>Login:</td>
          <td><input id="txtLogin" type="text" runat="server"/></td>
          <td><ASP:RequiredFieldValidator ControlToValidate="txtLogin"
               Display="Static" ErrorMessage="*" runat="server" 
               ID="vUserName" /></td>
       </tr>
       <tr>
          <td>Password:</td>
          <td><input id="txtPwd" type="password" runat="server"/></td>
          <td><ASP:RequiredFieldValidator ControlToValidate="txtPwd"
              Display="Static" ErrorMessage="*" runat="server" 
              ID="vUserPass" />
          </td>
       </tr>
       <tr>
          <td>Remember me:</td>
          <td><ASP:CheckBox id="chkPersistCookie" runat="server" autopostback="false" /></td>
          <td></td>
       </tr>
    </table>
            <p>
                <asp:Button ID="valid" runat="server" onclick="valid_Click" Text="valider" />
            </p>
    Login.aspx.cs

    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
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Data;
    using System.Data.SqlClient;
    using System.Web.Security;
     
     
    namespace WebApplication1
    {
        public partial class WF_Authentification : System.Web.UI.Page
        {
     
     
            protected void Page_Load(object sender, EventArgs e)
            {
     
            }
     
     
            private bool ValidateUser(string userName, string passWord)
            {
                SqlConnection conn;
                SqlCommand cmd;
                string lookupPassword = null;
     
                // Vérifie la présence de userName non valide.
                // userName ne doit pas être nul et doit comprendre entre 1 et 15 caractères.
                if ((null == userName) || (0 == userName.Length) || (userName.Length > 15))
                {
                    System.Diagnostics.Trace.WriteLine("[ValidateUser] Input validation of userName failed.");
                    return false;
                }
     
                // Vérifie la présence de passWord non valide.
                // passWord ne doit pas être nul et doit comprendre entre 1 et 25 caractères.
                if ((null == passWord) || (0 == passWord.Length) || (passWord.Length > 25))
                {
                    System.Diagnostics.Trace.WriteLine("[ValidateUser] Input validation of passWord failed.");
                    return false;
                }
     
                try
                {
                    // Contactez votre administrateur SQL Server afin d'obtenir une chaîne de connexion
                    // appropriée à utiliser pour la connexion à votre serveur SQL local.
                    conn = new SqlConnection("Data Source=.\\SQLEXPRESS;Integrated Security=True;User Instance=True");
                    conn.Open();
     
                    // Crée SqlCommand pour sélectionner le champ pwd dans la table d'utilisateurs étant donné le userName fourni.
                    cmd = new SqlCommand("Select Pwd from Gestionnaire where Login=@userName", conn);
                    cmd.Parameters.Add("@userName", SqlDbType.VarChar, 25);
                    cmd.Parameters["@userName"].Value = userName;
     
                    lookupPassword = (string)cmd.ExecuteScalar();
     
                    // Nettoie la commande et les objets de connexion.
                    cmd.Dispose();
                    conn.Dispose();
                }
                catch (Exception ex)
                {
                    // Ajoute ici la gestion des erreurs pour le débogage.
                    // Ce message d'erreur ne doit pas être renvoyé à l'appelant.
                    System.Diagnostics.Trace.WriteLine("[ValidateUser] Exception " + ex.Message);
                }
     
                // Si aucun mot de passe n'est trouvé, retourne false.
                if (null == lookupPassword)
                {
                    // Vous pouvez écrire ici les échecs de tentative de connexion dans le journal des événements, pour une sécurité accrue.
                    return false;
                }
     
                // Compare lookupPassword et le passWord d'entrée à l'aide d'une comparaison sensible à la casse.
                return (0 == string.Compare(lookupPassword, passWord, false));
     
            }       
     
            protected void valid_Click(object sender, EventArgs e)
            {
                if (ValidateUser(txtLogin.Value, txtPwd.Value))
                {
                    FormsAuthentication.RedirectFromLoginPage(txtLogin.Value,
                       chkPersistCookie.Checked);
     
                }
                else
                    Response.Redirect("WF_login.aspx", true);           
     
     
                 }
               }
     
            }
    S'il vous plait aidez moi c'est la première fois que je crée une authentification j'ai trouvé un article et j'ai modifié Quelques lignes selon ce j'ai compris..
    Merci d'avance

  2. #2
    Modérateur

    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Avril 2007
    Messages
    1 996
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 996
    Par défaut
    Bonjour,

    tu ne précises pas quelle est ton erreur... Difficile de t'aider donc...

    Cela dit, je suppose que ton problème est que
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    lookupPassword = (string)cmd.ExecuteScalar();
    ne renvoie rien.

    Si c'est bien le problème que tu rencontres :
    - revoie ta chaîne de connexion
    - enlève le "@" dans
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    cmd.Parameters.Add("@userName", SqlDbType.VarChar, 25); cmd.Parameters["@userName"].Value = userName;
    D'autre part, ce n'est pas très clair : tu sembles utiliser le provider intégré du framework mais en même temps tu utilises une base perso.

    Que veux-tu faire exactement : exploiter une table d'une base de données que TU as conçue et dans laquelle tu stockes les informations de login de tes users ou utiliser la bdd aspnetDB ?

  3. #3
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2011
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2011
    Messages : 21
    Par défaut
    oui tu as raison..la première fois j'ai pensé a utiliser la base ASPDB avec VS2010 mais lorsque j'ai ajouté un rôle ou un utilisateur via (projet/cofiguration asp.net/sécurité...) il s'ajoute avec succès mais je ne le trouve pas dans la Base de Données!! donc j'ai changé la base avec une BD personnelle et sincerement je sais pas qu'est ce que je doit faire veuillez m'aider à choisir la méthode la plus facile en me guidant sur le bon voie et je serai très reconnaissante

  4. #4
    Membre confirmé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2006
    Messages
    61
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2006
    Messages : 61
    Par défaut
    Salut, déjà est ce que tu arrives à ouvrir la connexion au serveur, vu que je ne vois pas le nom de la base de données à laquelle tu te connectes
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    conn = new SqlConnection("Data Source=.\\SQLEXPRESS;Integrated Security=True;User Instance=True");
    je pense qu'il faut l'ajouter.
    Et pour le passage des paramètres essaye plutôt de faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    cmd.Parameters.AddWithValue("@userName", userName);
    au lieu de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    cmd.Parameters.Add("@userName", SqlDbType.VarChar, 25);
    cmd.Parameters["@userName"].Value = userName;
    c'est conseillé http://msdn.microsoft.com/fr-fr/libr...withvalue.aspx

  5. #5
    Modérateur

    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Avril 2007
    Messages
    1 996
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 996
    Par défaut
    Citation Envoyé par ilya-bhn Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    cmd.Parameters.AddWithValue("@userName", userName);
    Ca ne fonctionnera pas plus. Il faut supprimer le "@" du nom du paramètre.

    Sinon, pour le fond du problème, si tu souhaites utiliser le provider de sécurité par défaut du framework, regarde ce tutoriel.

Discussions similaires

  1. [C#][ODBC][SQLServer2005] Erreur d'authentification
    Par Notre-Dame dans le forum C#
    Réponses: 17
    Dernier message: 28/11/2009, 02h43
  2. [TIdSMTP] Envoi d'un mail avec authentification ?
    Par BACUS dans le forum C++Builder
    Réponses: 4
    Dernier message: 16/06/2004, 16h18
  3. [Débutant]Classe d'Authentification : compilation impossible
    Par acyclique dans le forum Servlets/JSP
    Réponses: 4
    Dernier message: 23/08/2003, 19h42
  4. Authentification Sécurisée
    Par HPJ dans le forum MS SQL Server
    Réponses: 7
    Dernier message: 23/06/2003, 10h45
  5. [POSTGRES] pb configuration authentification
    Par Fyna dans le forum PostgreSQL
    Réponses: 2
    Dernier message: 19/06/2003, 19h16

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