> Tech > Analyse du code ASP.NET

Analyse du code ASP.NET

Tech - Par Renaud ROSSET - Publié le 24 juin 2010
email

L'un des atouts des applications Web est la simplicité avec laquelle les utilisateurs peuvent passer d'une page à  l'autre. Les applications ASP.NET peuvent faciliter cette navigation en utilisant des liens hypertexte sur les pages .htm ou .html, ou en contrôlant par programmation la navigation d'une page à  l'autre par le

biais du contrôle LinkButton. Sur une page
.aspx, ce contrôle ressemble à  un lien hypertexte, mais il se
programme comme un bouton de commande dans
VB.NET. Lorsqu’un utilisateur clique sur un bouton, un événement
Click pour le contrôle LinkButton envoie la page à 
partir de la session du navigateur sur le poste de travail de
l’utilisateur vers le serveur Web. Dès que la page arrive sur le
serveur, l’événement Page_Load se déclenche. ASP.NET gère
l’événement Page_Load avant les événements associés au
contrôle qui envoient une page au serveur Web. Par conséquent,
vous pouvez gérer un événement Click pour un
contrôle en utilisant soit une procédure d’événement
Page_Load, soit la procédure d’événement Click.
Pour contrôler la navigation à  partir de la page
Default.aspx, cette dernière utilise le contrôle LinkButton,
son événement Click et l’événement Page_Load. Le listing 4
contient les procédures d’événement sous-jacentes à  la page
Default.aspx. Vous pouvez employer Visual Studio .NET 2003
pour visualiser ce code dans Default.aspx.vb. Il est possible
d’ouvrir Default.aspx.vb à  partir de Default.aspx dans l’IDE
Visual Studio en sélectionnant
View, puis Code.
L’encadré A du listing
4 présente la procédure
d’événement Page_
Load, chargé d’exécuter
les tâches associées à 
l’événement Click pour
le contrôle LinkButton
(hylLogin) pointant initialement
vers la page
Login.aspx. Si la variable
de session intitulée
LoggedIn a la valeur
False, la procédure configure
hylLogin de sorte
qu’il pointe vers la page
Login.aspx. Si la variable
a la valeur True, la procédure
supprime le lien de
hylLogin et modifie le
texte du contrôle afin
d’indiquer que l’utilisateur
est déjà  authentifié.
Les t r o i s autres
procédures du listing 4
gèrent les procédures
d’événement Click pour
les trois autres contrôles
LinkButton situés sur la page Default.aspx. L’encadré B présente
la navigation conditionnelle vers une page Web HTML
standard, Page1OfContent. htm. Ce type de page Web ne
comporte aucun code ASP.NET sous-jacent. Si, au moment
de cliquer sur le lien pointant vers le contenu de Page 1, l’utilisateur
n’est pas authentifié, le contrôle renvoie vers la page Login.aspx afin que l’utilisateur puisse s’identifier. Ce mécanisme
de redirection bloque les personnes qui essaient de
consulter la page Page1OfContent.htm à  partir de Default.
aspx sans s’être identifiés au préalable comme membres
du groupe. Vous pouvez employer d’autres techniques de
gestion des accès sécurisés aux pages Web.
Par exemple, en plaçant le contenu de Page1Of-
Content.htm sur une page .aspx, vous pouvez écrire du code
sous-jacent afin que l’accès à  la page
soit limité aux visiteurs déjà  authentifiés.
L’encadré C du listing 4 affiche les
procédures d’événement Click pour
les pages CurrentMembers.aspx et
EditMyMemberInfo.aspx. Ces deux
procédures redirigent inconditionnellement
le contrôle vers une autre
page Web (laquelle dépend de la procédure).
Ces pages disposent de
mécanismes de contrôle intégrés, qui
vérifient si l’utilisateur est authentifié.
La page Login.aspx comporte
deux zones de texte, dans lesquelles
un utilisateur peut entrer un ID et un
mot de passe que l’application compare
avec les valeurs de colonne
MemberID et MemberPW dans la
table IDInfo, et un bouton permettant
de lancer une recherche pour les valeurs
saisies dans les zones de texte.
Le listing 5 inclut un extrait du code
sous-jacent de la page Login.aspx. Le
code non représenté, indiqué par des
ellipses verticales, est une section qui
déclare et affecte des valeurs aux paramètres
de l’objet Sqlcommand
ADO.NET cmd1.
L’encadré A montre le code
ASP.NET d’ouverture d’une connexion
vers la base de données SqlMag
MemberApp. Lorsque vous exécutez
l’application dans votre environnement, modifiez l’argument
Data Source en str1, afin qu’il pointe vers la l’instance SQL
Server de votre environnement qui contient la base de données
SqlMagMemberApp. Lorsque j’exécute cette application
pour un groupe dont j’assure la gestion, le paramètre
Data Source pointe vers une adresse IP pour le serveur SQL
Server sur lequel résident les informations des membres.
L’encadré B du listing 5 présente la syntaxe à  employer
pour qu’un objet SqlCommand pointe vers la
procédure stockée IsValidMember et pour
appeler l’objet command. (Pour plus d’informations
sur l’utilisation de l’objet Sql-
Command, reportez-vous à  l’article de
Michael Otey « ADO.NET 101 : SqlCommand
»). Le code utilise la méthode
ExecuteNon Query pour l’objet cmd1 car la
procédure stockée IsValidMember ne retourne
pas d’ensemble de résultats.
L’encadré C montre le code requis pour traiter la valeur de statut
retournée par la procédure stockée IsValidMember, où le
paramètre @OK représente la valeur en question. Si le paramètre
est à  1, le code définit la valeur True pour la variable de
session LoggedIn, sinon la variable de session a la valeur False.
Si un visiteur du site clique sur le troisième contrôle
LinkButton de la page Default.aspx après l’authentification,
l’application affiche la page CurrentMembers.aspx illustrée à 
la figure 3 précédente. Cette page présente
dans un contrôle DataGrid la liste
des membres répertoriés dans la base
de données SqlMagmemberApp. Les informations
proviennent de la vue
CurrentMembers de la base de données.
Les membres affichés dépendent
de la date courante par rapport à  la date
d’expiration d’adhésion. La figure 3
montre le contrôle DataGrid dans une
session de navigateur exécutée pour les
besoins de l’article.
Le code sous-jacent de la page
CurrentMembers.aspx commence par
rediriger le contrôle vers la page
NotLoggedIn.htm si le visiteur n’est pas
déjà  authentifié. Ce mécanisme de redirection
restreint les fonctionnalités de la
page en cours aux membres répertoriés.
Ensuite, le code sous-jacent de la
page CurrentMembers.aspx établit une
connexion de base de données s’appuyant
sur la syntaxe de l’encadré A du
listing 5. Le listing 6 présente un extrait
du code sous-jacent de la page Current
Members.aspx. Ce code déclare un objet
SqlCommand (cmd1) basé sur la
vue CurrentMembers et utilise cet objet
en tant que paramètre de propriété
SelectCommand pour un objet ADO.
NET SqlDataAdapter (dap1). Cet adaptateur
de données sert à  remplir le
DataSet das1 source du contrôle
DataGrid de la figure 3.
La figure 4 présente la vue Design
de la page EditMymemberInfo.aspx. Le
contrôle situé sur cette page affiche les
valeurs de colonne MemberID et
MemberPW pour le membre répertorié
et fournit une zone de texte permettant
de spécifier un nouveau mot de
passe. Un clic sur le bouton Update
Password permet de modifier le mot
de passe sur le formulaire et dans la base de données
SqlMagMemberApp. Un membre répertorié peut mettre à 
jour ses informations de contact en modifiant le contenu de
n’importe laquelle des quatre zones de texte situées sous le
bouton Update Password et en cliquant sur le bouton Update
Contact Info.
Chaque bouton appelle une procédure stockée qui
actualise la base de données SqlMagMemberApp. Un clic sur le bouton Update Password appelle la procédure stockée
EditMyPassword, alors que le bouton Update
Contact Info appelle la procédure stockée EditMyRow
d’une des deux manières suivantes. Si la zone de texte
pour le numéro de téléphone (txtPhone) est vide («  »),
le code appelle la procédure stockée EditMyRow sans
passer de valeur pour le paramètre @inPh. Cette opération
affecte la valeur NULL à  la valeur de colonne
Phone pour la ligne de la table ContactInfo. Si
txtPhone contient une chaîne non vide, le code utilise
cette dernière en tant que valeur pour @inPh lors de
l’appel de la procédure EditMyRow. Le listing 7 présente
la procédure d’événement Click pour le bouton
Update Contact Info.

Téléchargez cette ressource

Préparer l’entreprise aux technologies interconnectées

Préparer l’entreprise aux technologies interconnectées

Avec la « quatrième révolution industrielle », les environnements hyperconnectés entraînent de nouveaux risques en matière de sécurité. Découvrez, dans ce guide Kaspersky, comment faire face à cette nouvelle ère de vulnérabilité.

Tech - Par Renaud ROSSET - Publié le 24 juin 2010