Académique Documents
Professionnel Documents
Culture Documents
Microsoft France
Microsoft
Sommaire
1 INTRODUCTION .................................................................................................................................................... 3 1.1 1.2 2 CONTEXTE FONCTIONNEL .................................................................................................................................... 3 CONTEXTE TECHNIQUE ........................................................................................................................................ 4 CREER UNE PAGE DENREGISTREMENT DUN NOUVEL UTILISATEUR .................................................................... 5 CREER UNE PAGE DAUTHENTIFICATION (LOGIN) .............................................................................................. 11 CONFIGURER LAUTHENTIFICATION EN MODE FORMULAIRE .............................................................................. 14 CONFIGURER LA GESTION DES ROLES ................................................................................................................ 15 PREPARER LA STRUCTURE DE REPERTOIRE DES PAGES WEB ............................................................................... 18 CREER DES REGLES DAUTORISATION ................................................................................................................ 20 CONTROLER LA VISIBILITE DES LIENS DANS LA NAVIGATION ............................................................................. 22
AFFICHER DES INFORMATIONS PERSONNALISEES ............................................................................... 26 4.1 4.2 AFFICHER UN MENU PERSONNALISE .................................................................................................................. 26 AFFICHER UN MESSAGE DE BIENVENUE PERSONNALISE ..................................................................................... 27 VALIDER LE FORMAT DES PARAMETRES DACCES .............................................................................................. 32 METTRE LES ROLES EN CACHE ........................................................................................................................... 32
Automne 2005
Page 2 sur 33
Microsoft
1 Introduction
Cet atelier sinscrit dans le cadre du tutorial de dcouverte de ASP.NET 2.0 dont lobjectif est la construction dune application web pas pas. Les exercices de latelier 5 prsentent les techniques de mise en uvre de la scurit avec ASP.NET 2.0.
Contexte fonctionnel de latelier 5 dans le cadre du Tutorial Il se trouve que toutes les pages web de votre application ne sont pas accessibles tout le monde. Cest pourquoi vous allez mettre en place un certain nombre de rgles de scurit et proposer lutilisateur de sauthentifier pour contrler ses dplacements et ses agissements dans le site. (Dans le prochain atelier, vous ajouterez galement la possibilit pour lutilisateur de sauvegarder sa slection dannonces parmi les annonces quil a retenues sur le site. ) Voici les rgles de scurit essentielles de lapplication AffairesSansRisque : 1. Lutilisateur peut utiliser lapplication de faon anonyme ou connect e. Pour se connecter il sidentifie sur une page de login. Sil sagit de la toute premire fois quil se connecte, il doit dabord senregistrer auprs de lapplication en rpondant un questionnaire. 2. Lutilisateur voit un message de bienvenue personnalis dans la rubrique Espace Membre. (Cest dans espace que vous lui donnerez les moyens de retrouver sa slection dannonces dans latelier suivant). 3. En fonction des rgles de scurit daccs tablies sur les pages du site, il faut que le menu de lapplication sadapte et cache les pages non autorises lutilisateur en cours. 4. Les rgles daccs sur les pages sont : a. Toutes les annonces publies sur le site sont accessibles tout le monde : ConsulterAnnoncesJournaux.aspx ConsulterAnnoncesParRegion.aspx b. Les annonces ne peuvent tre modifies que par des utilisateurs ayant un rle dadministrateur du site : AdministrerAnnonces.aspx DetailsAnnonce.aspx c. Pour pouvoir publier une annonce sur le site, lutilisateur doit tr e authentifi auprs du systme : DiffuserAnnonce.aspx Automne 2005 Tutorial Dcouverte de ASP.NET 2.0 Page 3 sur 33
Microsoft
Scuriser lapplication web Atelier 5 DiffuserAnnonceTerminee.aspx d. Pour rpondre lenqute de satisfaction de la page daccueil, il faut tr e authentifi et connu du site : EnqueteSatisfaction.aspx EnqueteSatisfactionTerminee.aspx
La solution de cet atelier est disponible dans le rpertoire ..\Atelier 5\Solution. Les fichiers utiles, auxquels font rfrence les exercices sont disponibles dans le rpertoire ..Atelier 5\Fichiers utiles.
Automne 2005
Page 4 sur 33
Microsoft
Objectif Lobjectif de cet exercice est de crer une page pour quun utilisateur puisse sauthentifier sur le site. Contexte fonctionnel Lobjectif de cet exercice est de construire une page Login.aspx proposant lutilisateur : - sil est dj membre de la communaut des utilisateurs du site : de saisir ses paramtres daccs pour se connecter. - Sil ne sest encore jamais enregistr auprs de AffairesSansRisque : de rpondre un questionnaire et de dfinir ses paramtres daccs au site.
Microsoft
Ouvrez la page Login.aspx en mode Design. Faites un glisser dplacer de la Bote outils > rubrique Connexion > CreateUserWizard sur le contrle Content1 de la page.
Remarquez la batterie de nouveaux contrles de connexion travaillant sur le service dappartenance dASP.NET 2. Ils vont nous simplifier la vie en matire de construction des pages de gestion classique de la scurit dans une application web (page de login, denregistrement dun nouvel utilisateur, de rcupration du mot de passe en cas doubli, de changement de mot de passe etc) Vous obtenez en mode Design : Les * sont des contrles de validation ASP.NET 2.0 (du type RequiredFieldValidator pour les champs obligatoires)
Champs traditionnels denregistrement dun nouvel utilisateur dans la base des comptes.
Ce contrle hrite du nouveau contrle avanc Wizard de ASP.NET 2.0 ( Pour rappel, vous lavez utilis latelier 2 pour la mise en uvre de lenqute de satisfaction du site) et propose donc plusieurs tapes (WizardSteps) personnalisables. Ltape par dfaut actuelle est Inscrivez-vous pour obtenir votre nouveau compte. Vous pouvez ajouter de nouvelles tapes en cliquant sur Ajouter/Supprimer WizardSteps. Automne 2005 Affichez ltape suivante dans la liste droulante Etape : Termin : Tutorial Dcouverte de ASP.NET 2.0 Page 6 sur 33
Microsoft
Ce contrle nest donc pas seulement une reprsentation graphique ! Il est capable de proposer lutilisateur une succession dcrans et va bien sr soccuper de faire lenregistrement de lutilisateur pour nous dans une base de donnes. Regardons cela de plus prs 4. Sauvegardez la page Login.aspx et excutez-la dans Internet Explorer (Attention ! rebasculez le contrle sur la premire tape si vous voulez que celle-ci saffiche par dfaut au lancement de la page). Saisissez les informations demandes. Entrez volontairement un mot de passe diffrent pour la ligne Mot de passe et Confirmer le mot de passe. Que se passe-t-il lorsque vous passez au champ de saisie suivant avec la touche TAB ? Les contrles de validation de ASP.NET 2.0 dtectent le problme. Ils gnrent en effet du script client sur votre page.
Corrigez les deux mots de passe pour quils soient identiques et cliquez sur Crer un utilisateur. Vous obtenez lcran de la seconde tape :
Par contre si vous cliquez sur Continuer, vous restez sur la mme page...ce nest pas trs logique 5. Branchez la redirection automatique de lutilisateur vers la page daccueil du site en fin denregistrement : Ouvrez Login.aspx en mode Design. Affichez la fentre de proprits du contrle CreateUserWizard. Ajoutez une valeur la proprit ContinueDestinationPageUrl en cliquant sur slectionnez Default.aspx. et
Automne 2005
Page 7 sur 33
Microsoft
Notez au passage toutes les autres proprits de ce contrle : Les proprits de contenu des diffrents messages :
Et beaucoup dautres qui influencent le comportement du contrle comme RequireEmail, MembershipProvider etc Sauvegardez et r excutez la page pour crer un autre utilisateur et valider le transfert sur la page daccueil lors de la dernire tape.
6. Donc vos comptes ont t crs ? Sans blagueo a ? Ouvrez lExplorateur de solutions de Visual Web Developer et cliquez sur dans la barre dicne pour ractualiser votre rpertoire de projet. Ouvrez le rpertoire App_Data. Vous constatez quune nouvelle base de donnes ASPNETDB.MDF a t cre. Double cliquez sur le fichier .mdf pour ouvrir une connexion dans lExplorateur de bases de donnes de Visual Web Developer.
Cette base de donnes contient en fait toutes les tables et les lments pour la sauvegarde des donnes de tous les services de ASP.NET 2.0 : aspnet_Membership pour le service dappartenance, aspnet_Roles pour la gestion des rles etc Elle a t cre automatiquement (merci ASP.NET 2.0 !) au moment o vous avez insrer un premier utilisateur avec le contrle CreateUserWizard. Pour la crer vous-mme directement, utilisez lutilitaire aspnet_regsql (dj vu latelier 4 pour configurer la dpendance de cache sur SQL Server Express). Cet assistant vous guide dans la cration de la base de donnes que vous souhaitez mettre en uvre. Automne 2005 Tutorial Dcouverte de ASP.NET 2.0 Page 8 sur 33
Microsoft
7. Chargez les donnes de la table aspnet_Membership : Faites un clic droit sur la table > Afficher les donnes de la table.
Voil o ont t mmorises les informations denregistrement des deux comptes nouvellement crs. Remarquez quASP.NET a encrypt les donnes confidentielles.
Vous pouvez choisir votre propre systme de sauvegarde et personnaliser compltement la gestion de lenregistrement dun compte puisque le service dappartenance de ASP.NET 2.0 sappuie sur un fournisseur. Il vous suffit dcrire votre propre fournisseur. Vous avez vu galement dans latelier prcdent lutilitaire aspnet_regsql qui permet de prparer une base de donnes quelconque la sauvegarde des donnes de tous les services dASP.NET 2.0. 8. Il ne reste plus qu retravailler le style du contrle CreateUserWizard pour amliorer le rendu de la page : Ouvrez la page Login.aspx en mode Source pour observer la reprsentation du contrle <asp :CreateUserWizard> :
Vous constatez que le contrle contient une collection dtapes <WizardSteps> contenant ici les tapes intgres ASP.NET 2.0 <asp :CreateUserWizardStep> et <asp :CompleteWizardStep>. Notez galement la proprit ContinueDestinationPageUrl qui redirige lutilisateur sur la page Default.aspx en fin denregistrement. Rebasculez la page en mode Design. Slectionnez la balise active du contrle > Mise en forme automatique.
Automne 2005
Page 9 sur 33
Microsoft
Lidal serait dajouter une dfinition des caractristiques graphiques du contrle au fichier dapparence Default.skin de lapplication (cf. atelier 2). Vous retrouvez les nombreuses proprits de style pour les diffrentes parties du contrle dans sa fentre de proprits.
Nous allons implmenter notre propre mise en forme et surtout personnaliser le dessin de chacune des tapes. Pour cela, toujours dans la balise active du contrle, slectionnez Personnaliser ltape Crer un utilisateur.
Chaque contrle est maintenant disponible dans une structure tableau HTML, y compris les contrles de validation et daffichage des messages derreur. Vous pouvez donc le remodeler comme vous le souhaiter. Prenez plutt lhabitude davoir recours au balisage structurel (balises <div>) et la feuille de style. Pour simplifier, dans cet exercice, vous allez juste apporter quelques modifications de contenu. Notez que le menu dans la balise active propose maintenant loption Rinitialiser ltape pour le cas o vous souhaiteriez annuler. Basculez en mode Source et remplacez le contenu de la premire colonne de la premire ligne du tableau par :
<td align="left" colspan="2"> <h1>Vous souhaitez devenir membre de notre espace annonces en ligne :</h1> <h2>Crez votre compte. Tous les champs suivants sont obligatoires pour la cration de votre espace personnel.</h2> </td> De la mme manire, slectionnez la seconde tape de lassistant et personnalisez -l comme suit :
Automne 2005
Page 10 sur 33
Microsoft
La balise <ContentTemplate> dlimite le modle de contenu pour le contrle <asp :CompleteWizardStep>. Ne laissez que cette ligne de texte (aligne gauche).
Vous remarquez que lon a supprim galement le bouton Continue car il va savrer inutile pour la suite de lexercice (vous allez comprendre pourquoi dans le suivant). Vous pouvez donc supprimer aussi lattribut ContinueDestinationPageUrl="~/Default.aspx" dans la dfinition du contrle <asp :CreateUserWizard>. Rebasculez le contrle sur la premire tape puis sauvegardez la page Login.aspx et excutez-la dans Internet Explorer pour observer le rsultat final :
Note :
Microsoft
Faites un glisser dplacer de la Bote outils > rubrique Connexion > Login sur le contrle Content1 de la page au dessus du contrle CreateUserWizard.
Notez les diffrentes proprits de ce contrle : - DestinationPageUrl : pour rediriger lutilisateur vers une page dfinie aprs authentification. Dans lexercice, nous allons laisser ASP.NET 2.0 rediriger lutilisateur automatiquement vers la page initialement demande par lutilisateur avant quon lui demande de sauthentifier. - CreateUserUrl et CreateUserText pour ajouter un lien hypertexte vers la page denregistrement dun nouvel utilisateur (pour nous cest la mme page). - PasswordRecoveryText et PasswordRecoveryUrl pour ajouter un lien hypertexte vers une page permettant lutilisateur de retrouver son mot de passe (utilise le contrle PasswordRecovery). - Et beaucoup dautres 3. Changez lapparence du contrle : En mode Design, slectionnez le contrle Login > sa balise active > Convertir en modle.
Basculez en mode Source puis insrez une ligne de sparation entre les deux contrles serveur avec la balise <hr/>.
<td align="left" colspan="2"> <h1>Vous tes dj membre :</h1> <h2> Saisissez vos paramtres d'accs.</h2> </td> 4. Sauvegardez la page Login.aspx et excutez-la dans Internet Explorer. Connectez-vous avec lun des comptes crs prcdemment pour valider le fonctionnement des contrles.
Automne 2005
Page 12 sur 33
Microsoft
Crez un nouveau compte utilisateur (vous pouvez essayer de crer deux fois de suite le mme compte, le contrle CreateUserWizard vous renverra un message derreur dans sa zone de message).
Note :
Automne 2005
Page 13 sur 33
Microsoft
Objectif Lobjectif de cet exercice est de configurer lapplication web pour quelle fonctionne avec lauthentifica tion ASP.NET en mode formulaire, de dfinir des rles utilisateurs et des rgles daccs aux pages du site en fonction de ceux-ci. Contexte fonctionnel Lapplication AffairesSansRisque autorise certains utilisateurs administrer les annonces du site (page AdministrerAnnonces.aspx). Pour faire cette distinction, vous allez crer un rle appel Administrateurs et placer dans ce rle un nouveau compte appel Admin. Rgles daccs Toutes les annonces publies sur le site sont accessibles tout le monde (dj vrai par dfaut) Les annonces ne peuvent tre modifies que par des utilisateurs ayant un rle dadministrateur du site Pour pouvoir publier une annonce sur le site, lutilisateur doit tre authentifi auprs du systme Pour rpondre lenqute de satisfaction de la page daccueil, il faut tre authentifi et connu du site Pages correspondantes ConsulterAnnoncesJournaux.aspx ConsulterAnnoncesParRegion.aspx AdministrerAnnonces.aspx DetailsAnnonce.aspx DiffuserAnnonce.aspx DiffuserAnnonceTerminee.aspx EnqueteSatisfaction.aspx EnqueteSatisfactionTerminee.aspx
Avant de mettre en place de rgles daccs, vous allez restructurer le rpertoire du projet pour rassembler les pages en fonction des utilisateurs y ayant accs dans des sous rpertoires [0] et [1] : Nom de la page AdministrerAnnonces.aspx DetailsAnnonce.aspx DiffuserAnnonce.aspx DiffuserAnnonceTerminee.aspx EnquteSatisfaction.aspx EnquteSatisfactionTerminee.aspx Toutes les autres pages du site Utilisateurs ayant accs la page Rle Administrateurs Rpertoire [0]
Utilisateur authentifi
Utilisateur anonyme
Automne 2005
Page 14 sur 33
Microsoft
Ce systme dauthentification sappuie sur lutilisation de cookies. Vous pouvez grer le nom du cookie, le nom de la page de login, le niveau de protection du cookie etc en ajoutant la balise <forms> lintrieur de <authentication> avec le format suivant : <forms name="nom du cookie" loginUrl="url page de login" protection="[All|None|Encryption|Validation]" timeout="dure de vie du cookie" path="/"></forms> 2. Sauvegardez le fichier Web.config.
Les autres configurations de scurit associes lauthentification en mode formulaire, notamment des rles et autorisations sur le site, vont galement reposer sur le fichier de configuration de votre application (Web.config). Dans lexercice suivant, vous allez utiliser loutil dadministration de site web fourni par ASP.NET 2.0 qui propose une interface web conviviale pour configurer les options de scurit de l application web plutt que dditer directement le fichier Web.config. Quoiquil en soit au final, cet assistant gnre les balises et les lignes correspondantes dans le fichier de configuration.
Note :
Microsoft
Notez dans la barre de tche le lancement du site web dans le serveur web intgr VWD : http//localhost :<n port>/asp.netwebadminfiles Loutil de configuration est en effet une application web ddie la configuration de votre application web. 2. Avant dactiver les rles, crez un nouvel utilisateur Admin : Vous constatez que vous avez dj un certain nombre dutilisateurs dans votre base de compte.
Cet assistant vous guide pas pas dans tout le processus complet de configuration de la scurit.
Remarquez la rubrique Utilisateurs qui vous permet de crer, supprimer, dsactiver les utilisateurs qui se sont enregistrs sur le site. Vous auriez pu configurer la scurit en mode formulaire au 3.1 en cliquant sur Slectionnez le type dauthentification pour gnrer automatiquement la balise <authentication> du fichier Web.config.
Automne 2005
Page 16 sur 33
Microsoft
Lauthentification en mode formulaire correspond un accs public depuis Internet par opposition lauthentification intgre qui sappuie sur des utilisateurs connus de Windows (donc du rseau local).
Revenez sur lcran daccueil de longlet Scurit. Cliquez sur Crer un utilisateur. Saisissez les paramtres daccs comme suit :
Pour linstant aucun rle nest dfini pour lapplication mais vous auriez pu insrer lutilisateur directement dans le rle Administrateurs si celui-ci tait dj cr.
3. Vous allez maintenant activer la gestion des rles : Sur lcran daccueil de longlet Scurit, cliquez sur Activer les rles. La rubrique Rles devient :
4. Crez un rle Administrateurs pour les utilisateurs qui auront lautorisation dadministrer des annonces. Cliquez sur Crer ou grer des rles. Saisissez : Administrateurs
Automne 2005
Page 17 sur 33
Microsoft
Cliquez sur Ajouter le rle. Le rle est ajout la liste des rles de votre application.
5. Ajoutez lutilisateur Admin au rle Administrateurs : Dans la liste des rles, cliquez sur Grer pour le rle Administrateurs. Saisissez Admin dans la zone pour puis cliquez sur Rechercher un utilisateur pour retrouver le compte Admin que vous avez cr prcdemment. Cochez la case Lutilisateur est dans le rle pour linclure dans le rle.
6. Fermez loutil dadministration de site web de ASP.NET 7. Ouvrez le fichier Web.config de lapplication et notez la nouvelle ligne : <roleManager enabled="true" /> dans la balise <system.web> qui indique ASP.NET 2.0 dactiver son service de gestion des rles au lancement de lapplication.
Note :
Microsoft
Scuriser lapplication web Atelier 5 Dans lExplorateur de solutions, faites un clic droit sur la racine du projet > Ajouter un dossier > Dossier normal.
Nommez le dossier : 0. Faites un glisser dplacer dans ce dossier des pages AdministrerAnnonces.aspx et DetailsAnnonce.aspx. 2. Rptez lopration pour les pages accessibles aux utilisateurs authentifis et nommez le rpertoire : 1. Pages pour les Administrateurs . Pages pour les utilisateurs authentifis..
3. Ouvrez le fichier Plan de site Web.sitemap pour mettre jour les liens de navigation vers les pages DiffuserAnnonce.aspx et AdministrerAnnonces.aspx dans les menus :
4. Ouvrez la page le code de la page Default.aspx. Mettez jour le lien hypertexte vers la page EnqueteSatisfaction.aspx dans la ligne de code qui charge dynamiquement le pied de page de la page matre : <a href=1/EnqueteSatisfaction.aspx> Sauvegardez le fichier. 5. Dans le fichier dapparence Default.skin, mettez jour la proprit FinishDestinationUrl du contrle Wizard pour quelle pointe maintenant sur ~/1/EnqueteSatisfactionTerminee.aspx Sauvegardez le fichier. Automne 2005 Tutorial Dcouverte de ASP.NET 2.0 Page 19 sur 33
Microsoft
Note :
Attention cette rgle daccs ne suffit pas pour obtenir le comportement que vous souhaitez. En effet, par dfaut, nimporte quel utilisateur anonyme a accs toutes les pages. Donc ce nest pas en autorisant le rle Administrateurs que vous vitez cela. Il vous faut rajouter la rgle suivante qui garantit que en effet, seul les Administrateurs auront accs ce rpertoire car tous les autres utilisateu rs ny ont plus droit !
4. Ajoutez une rgle qui nautorise laccs au rpertoire 1 que pour les utilisateurs authentifis.
Automne 2005
Page 20 sur 33
Microsoft
Il est intressant de voir que, compte tenu du formalisme utilis par ASP.NET, vous tes amen prendre le problme lenvers et considrer que vous devez refuser laccs aux utilisateurs anonymes. 5. Fermer loutil dadministration de site web de ASP.NET 2.0. 6. Observez ce qui sest pass dans le fichier de configuration de lapplication : Ouvrez lExplorateur de solutions et cliquez sur licne Actualiser. Loutil dadministration a cr deux nouveaux fichiers de configuration dans chacun des sous rpertoires de lapplication, rgissant chacun laccs aux pages contenues dans le rpertoire correspondant. Observez le contenu des fichiers de configuration.
7. Excutez lapplication (CTRL F5) pour tester le nouveau comportement du site maintenant scuris : Dans la page daccueil, cliquez dans le pied de page sur le lien Enqute de satisfaction.
Vous devez tre redirig sur la page de login par ASP.NET qui dtecte que vous tes un utilisateur anonyme donc quil faut vous authentifier avant de pouvoir prte ndre consulter la page demande ! Cest l, vous lavez compris, tout lintrt de lauthentification par formulaire que vous avez configure au 3.1. ASP.NET sait (grce aux informations lues dans le fichier Web.config) que si les autorisations daccs ne le permettent pas, il doit automatiquement prsenter lutilisateur le formulaire de login que vous avez construit (par dfaut il cherche une page login.aspx). Ensuite, le service dappartenance de ASP.NET 2.0 valide que les paramtres daccs sont corrects. Enfin ASP.NET redirige automatiquement lutilisateur sur la page initialement demande. Le tout (merci ASP.NET !) sans une seule ligne de code Saisissez les paramtres daccs dun utilisateur du site dans la fen tre de login > Se connecter. Une fois authentifi, vous tes alors redirig automatiquement vers la page que vous aviez demand initialement, savoir EnqueteSatisfaction.aspx.
Automne 2005
Page 21 sur 33
Microsoft
Note :
Par contre, il faut vous identifier en tant quadministrateur pour voir apparatre le menu Administrer les annonces :
Automne 2005
Page 22 sur 33
Microsoft
Attention ! Ce phnomne de filtrage est la fonctionnalit dite de security trimming du service de navigation de ASP.NET 2.0 et nest pas actif par dfaut. Rappelez-vous ! Vous avez activ cette fonctionnalit sur le service de navigation dans le fichier de configuration de lapplication dans lexercice 5 de latelier 3 (Ajouter la navigation). Cette fonctionnalit sappuie directement sur les rgles daccs dfinies sur les urls des pages (et sur les permissions ventuelles de fichier galement) pour dterminer quels sont les liens cacher dans les menus. Vous allez dsactiver la fonctionnalit pour mettre en vidence son fonctionnement. Droulement de lexercice : 1. Supprimez provisoirement la balise <siteMap> dans le fichier de configuration de lapplication : Ouvrez le fichier web.config. Mettez en commentaire la balise <siteMap> activant le security trimming sur le fournisseur de service de navigation AspNetXmlSiteMapProvider.
2. Excutez lapplication (CTRL F5) et observez que tous les menus sont maintenant visibles pour lutilisateur anonyme. Le filtrage des liens a t dsactiv.
3. Rtablissez le comportement initial en supprimant le commentaire autour de la balise <siteMap> dans le fichier web.config.
Automne 2005
Page 23 sur 33
Microsoft
Vous pouvez dcider de donner les moyens des utilisateurs nayant normalement pas daccs aux travers des rgles de scurit certaines pages de voir quand mme les liens correspondant dans les menus en utilisant les rles utilisateurs directement dans le fichier de plan de site web.sitemap de lapplication. Imaginons que vous ayez un groupe dutilisateurs pilote qui travaillent sur la mise en place et la validation du site web pour lequel vous souhaitez donner la visibilit sur le menu dadministration des annonces. Crez un nouveau rle nomm UtilisateursAvecPouvoir (cf. point 4 de lexercice 3.2 prcdent). Insrez un utilisateur du site dans ce groupe. Ouvrez le fichier de plan de site web.sitemap. Ajoutez lattribut roles dans le nud correspondant au menu afficher malgr les rgles daccs mises en place sur le site comme suit :
Ici, vous dites ASP.NET que vous souhaitez rendre visible ce nud au rle des UtilisateursPilote, bien que ce groupe dutilisateurs nait pas daccs la page en question dans la scurit que vous avez tablie. Excutez lapplication et vous verrez que votre util isateur, une fois connect, voit le lien sur la page AdministrerAnnonces.aspx dans son menu. Malgr tout, il na pas daccs sur cette page, puisquen cliquant sur le lien, le site lui demande de sauthentifier, ne reconnaissant pas un utilisateur autoris travailler sur cette url dans les rgles daccs du site.
Lutilisateur nest pas reconnu comme ayant accs cette page et doit sauthentifier.
Automne 2005
Page 24 sur 33
Microsoft
Note :
Automne 2005
Page 25 sur 33
Microsoft
Objectif Lobjectif de cet exercice est dutiliser les contrles de connexion LoginView, LoginName et LoginStatus pour proposer lutilisateur un espace membre dans lequel il trouve des informations personnalises. Contexte fonctionnel Vous allez ajouter lapplication une zone Espace membre. Celle-ci propose : - un bouton Connexion/Dconnexion dynamique qui propose lutilisateur de se connec ter (ou au contraire de se dconnecter sil a dj ouvert une session). - un lien vers la slection dannonces enregistre par lutilisateur (cette fonctionnalit sera ensuite implmente dans le prochain atelier avec les profils). - un message de bienvenue en fonction de lutilisateur connect : Utilisateur authentifi (ici christine) Utilisateur dans le rle Administrateurs (ici Admin)
Utilisateur anonyme
Automne 2005
Page 26 sur 33
Microsoft
2. Dessinez dans la premire entre <li> un bouton de connexion/dconnexion : Dans la premire entre <li> faites un glisser dplacer de la Bote outils > rubrique Connexion > LoginStatus :
3. Dans la seconde entre <li>, ajoutez un lien hypertexte vers une page MaSelectionDAnnonces.aspx proposant lutilisateur la liste de ses annonces favorites sur le site : Crez une nouvelle page MaSelectionDAnnonces.aspx la racine du projet. Dans la seconde entre <li> faites un glisser dplacer de la Bote outils > rubrique Standard > HyperLink. Pointez dans la proprit NavigateUrl sur la page MaSelectionDAnnonces.aspx. Saisissez un texte dans la proprit Text : Ma slection dannonces. <ul class="link"> <li><asp:LoginStatus ID="LoginStatus1" runat="server" /></li> <li><asp:HyperLink ID="HyperLink1" runat="server" NavigateUrl="MaSelectionDAnnonces.aspx" Text="Ma slection d'annonces"> </asp:HyperLink> </li> </ul>
Vous pourriez ajouter ici un lien changer mon mot de passe vers ChangerMotDePasse.aspx qui contiendrait un contrle de connexion ChangePassword.
une
page
4. Sauvegardez la page matre (CTRL S) et lancez lapplication (CTRL F5) pour tester le rsultat.
Cliquez sur Connexion. Le contrle LoginStatus affiche la fentre Login.aspx. Connectez vous avec un compte du site. Le contrle LoginStatus sadapte et affiche maintenant Dconnexion :
Microsoft
Dans la page MasterPage.master en mode Source, positionnez le curseur devant la balise juste aprs le titre Espace membre en style <h1> :
Faites un glisser dplacer de la Bote outils > rubrique Connexion > LoginView sur la page. Basculez la page en mode Design.
2. Ajoutez un message personnalis pour les utilisateurs anonymes. Sur la balise active du contrle LoginView , slectionnez la vue Anonymous Template. Saisissez le message : Bonjour ! Pour passer une annonce vous devez vous identifier . Basculez en mode Source pour mettre ce texte dans une balise <h2> : <AnonymousTemplate> <h2>Bienvenue ! Pour passer une annonce vous devez vous identifier.</h2> </AnonymousTemplate> 3. Ajoutez un message personnalis pour les utilisateurs authentifis. Basculez la page en mode Design. Sur la balise active du contrle LoginView , slectionnez la vue LoggedInTemplate.
Saisissez le message : Bonjour ! Faites un glisser dplacer de la Bote outils > rubrique Connexion > LoginName juste aprs le mot Bonjour. Basculez en mode Source pour mettre le tout dans une balise <h2>.
Automne 2005
Page 28 sur 33
Microsoft
4. Sauvegardez la page matre et lancez lapplication pour tester lespace membre. Vue par dfaut Une fois authentifi
5. Ajoutez un message personnalis pour le rle des Administrateurs Affichez la page en mode Design. Sur la balise active du contrle LoginView , cliquez sur Modifier les RolesGroups Ajoutez le rle Administrateurs.
Affichez la vue RoleGroup[0] Administrateurs pour ajouter un message personnalis ddi aux utilisateurs de ce groupe.
<RoleGroups> <asp:RoleGroup Roles="Administrateurs"> <ContentTemplate> Bonjour <asp:LoginName ID="LoginName2" runat="server" /> ! Il y a actuellement <asp:Label ID="Label1" runat="server" Text="Label"> </asp:Label> utilisateurs connects sur le site. </ContentTemplate> </asp:RoleGroup> </RoleGroups> 6. Vous allez maintenant rcuprer le nombre dutilisateurs actuellement connects sur le site pour lafficher dans le contrle Label1. Pour cela, utilisez la classe Membership du service Automne 2005 Tutorial Dcouverte de ASP.NET 2.0 Page 29 sur 33
Microsoft
dappartenance de ASP.NET 2.0 qui permet de rcuprer toutes sortes dinformation sur la scurit de lapplication. Affichez la page en mode Design. Double cliquez sur un espace vide de la page pour faire apparatre la page de code et gnrer la procdure en rponse lvnement de chargement de la page Page_Load. Saisissez le code suivant : Code VB.NET Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load Dim lblNbUtilisateursConnectes As Label lblNbUtilisateursConnectes = CType(LoginView1.FindControl("Label1"), Label) If Not lblNbUtilisateursConnectes Is Nothing Then lblNbUtilisateursConnectes.Text = Membership.GetNumberOfUsersOnline().ToString() End If End Sub Code C# protected void Page_Load(object sender, EventArgs e) { Label lblNbUtilisateursConnectes; lblNbUtilisateursConnectes = (Label)LoginView1.FindControl("Label1"); if (lblNbUtilisateursConnectes !=null ) { lblNbUtilisateursConnectes.Text = Membership.GetNumberOfUsersOnline().ToString(); } } Cette fonction rcupre le nombre dutilisateurs ayant une session ouverte.
Vous remarquez que le contrle Label1 nest pas accessible directement. Vous devez passer par son container cest--dire le contrle LoginView1. En plus, le Label1 nest instanci en mmoire que dans le cas o cest la vue le contenant qui est charg. Vous pouvez galement utiliser les vnements ViewChanged et ViewChanging sur le contrle pour rcuprer le changement de vue. Le contrle a galement des proprits LoggedInTemplate, AnonymousTemplate et ContentTemplate pour accder aux diffrents modles et RoleGroups pour accder la collection des rles.
La mthode GetUser() de la classe Membership permet de rcuprer un utilisateur particulier et renvoie un objet de type MembershipUser permettant de grer un compte.
7. Sauvegardez et excutez lapplication pour tester le message personnalis destin aux Administrateurs du site. Connectez vous avec lutilisateur Admin du rle Administrateurs. Vous obtenez : Automne 2005 Tutorial Dcouverte de ASP.NET 2.0 Page 30 sur 33
Microsoft
Ouvrez une autre fentre dInternet Explorer en rcuprant ladresse url en cours et connectez vous avec un compte utilisateur du site. Faites menu Affichage > Actualiser (F5) sur la fentre de lutilisateur Admin pour observer le message de bienvenue indiquant maintenant 2 utilisateurs connects au site.
Attentionpour mmo une session dure 20 minutes par dfaut sur IIS.
Note :
Automne 2005
Page 31 sur 33
Microsoft
Automne 2005
Page 32 sur 33
Microsoft
Automne 2005
Page 33 sur 33