Les Labs Microsoft
Section C# / Asp.Net du site http://phenix.developez.com
par Patrick VALERI
Plan du site - Autres sections
Labs ASP.NET v1.1 Aurélien Norie & Sébastien Bovo [Microsoft]
J'ai repris les codes d'origine VB.NET en C# et apporter quelques commentaires.
Lab06
But du Lab
Le but de ce Lab de mettre en place l’authentification par formulaire pour une application ASP.NET.
Exercice 1 – les paramètres de sécurité dans le fichier Web.config
- Créer une nouvelle application Web ASP.NET en Visual Basic : « 06VBFormulaire »
- Dans l'Explorateur de projets, ouvrer le fichier Web.config
- Dans la balise « <authentication> », modifier le mode d'authentification en Forms
- Insérer la balise « <forms> » et indiquez les attributs appropriés :
< authentication mode ="Forms">
< forms name =".ASPXAuth" loginUrl ="logon.aspx"
protection ="All" path ="/" timeout ="30" />
</ authentication >
- Refuser l'accès à un utilisateur anonyme dans la section « <authorization> » de la manière suivante :
< authorization >
< deny users ="?" />
< allow users = "*" />
</ authorization >
- Lancer « l’Analyseur de requêtes » de SQL Server. Se Connecter au serveur local avec le nom « SA », et son mot de passe
- Activer la commande « Fichier/Ouvrir » afin d’ouvrir le fichier « Utilisateurs.sql » fourni
- Exécuter le contenu SQL de ce fichier sur la base « PUBS »
Exercice 2 – Page de logon et validation de l’utilisateur
- Ajouter un nouveau formulaire Web au projet nommé « Logon.aspx »
- Ajouter deux labels, un textbox nomé « txtUserName », un second textbox « txtUserPass » et un bouton « cmdLogin » :
- Attribuer à la propriété « TextMode » du textbox « txtUserPass » la valeur « Password »
- Double-cliquer sur le bouton pour faire apparaître le code behind
- Importer les espaces de noms nécessaires en début de fichier :
Imports System.Data.SqlClient
Imports System.Web.Security
- Créer une fonction ValidateUser pour valider les informations d'identification des utilisateurs par consultation dans la base de données :
Function ValidateUser( ByVal uid As String, ByVal passwd As String) As Boolean
Dim cnn As SqlConnection
Dim cmd As SqlCommand
Dim dr As SqlDataReader
Dim retVal As Boolean = False
cnn = New SqlConnection("server=localhost;uid=sa;pwd=saPassword;database=Pubs;")
cmd = New SqlCommand("Select * from users where uname = '" & uid & "'", cnn)
cnn.Open()
dr = cmd.ExecuteReader()
While (dr.Read())
If StrComp(dr.Item("Pwd"), passwd, 1) = 0 Then
retVal = True
End If
End While
cnn.Close()
ValidateUser = retVal
End Function |
Et en C#:
private bool ValidateUser( string uid, string passwd)
{
SqlConnection cnn = new SqlConnection("server=localhost;uid=pvaleri;pwd=pval77;database=Pubs;");
SqlCommand cmd = new SqlCommand("Select * from users where uname = '" + uid + "'", cnn);
cnn.Open();
bool retVal= false;
SqlDataReader dr = cmd.ExecuteReader();
while (dr.Read())
{
if (dr["Pwd"].ToString().CompareTo(passwd)== 0)
retVal = true;
}
cnn.Close();
return retVal;
} |
- Appeler cette fonction dans l’évènement « cmdLogin_Click » et rediriger l’utilisateur vers la page initialement appelée :
Private Sub cmdLogin_Click( ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdLogin.Click
If ValidateUser(txtUserName.Text, txtUserPass.Text) Then
FormsAuthentication.RedirectFromLoginPage(txtUserName.Text, False)
Else
Response.Redirect("logon.aspx", True)
End If
End Sub |
Et en C# :
private void cmdLogin_Click( object sender, System.EventArgs e)
{
if (ValidateUser(txtUserName.Text, txtUserPass.Text))
{
FormsAuthentication.RedirectFromLoginPage(txtUserName.Text, false);
}
else
Response.Redirect("logon.aspx", true);
} |
- Renommer la page « WebForm1.aspx » existante en « Default.aspx », puis l’ouvrir dans l'éditeur
- Ajouter un bouton « cmdSignOut » avec le texte « Se déconnecter »
- Double-cliquer sur le bouton pour voir apparaître le code behind
- Importez les espaces de noms nécessaires :
Imports System.Web.Security
- Utiliser le code suivant pour déconnecter l’utilisateur de l’application :
Private Sub cmdSignOut_Click( ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdSignOut.Click
FormsAuthentication.SignOut()
Response.Redirect("logon.aspx", True)
End Sub |
Et en C# :
private void cmdSignOut_Click( object sender, System.EventArgs e)
{
FormsAuthentication.SignOut();
Response.Redirect("logon.aspx", true);
} |
- Enregistrer et compiler le projet. Naviguer sur la page « Default.aspx »
- Constater que vous êtes automatiquement redirigés vers la page de Logon.
- Entrer le logon et le mot de passe d’un utilisateur valide (« user1 », « user1 » par exemple).
- Constater la redirection automatique vers la page demandée à l’origine.
Ce document est issu de
http://phenix.developpez.com/ et reste la propriété exclusive de son auteur.
La copie, modification et/ou distribution par quelque moyen que ce soit est soumise à l'obtention préalable de l'autorisation de l'auteur.