Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

ASP.NET - FORCER LE PASSAGE PAR UNE PAGE D'IDENTIFICATION AVANT L'ENTRÉE SUR LE SITE ASP.NET


Information sur la source

Catégorie :ASP.Net Source .NET ( DotNet ) Niveau : Initié Date de création : 18/09/2002 Date de mise à jour : 21/05/2003 11:01:53 Vu : 17 252

Note :
1,5 / 10 - par 2 personnes
1,50 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

Commentaire sur cette source (25)
Ajouter un commentaire et/ou une note


Description

Cet exemple est une des trois possibilités d'authentification prévue sur ASP.NET, ainsi nous verrons dans cet exemple la plus classique sur Internet, l'authentification par formulaire simple (Login/Pass).
Ceci se fait par le paramétrage du fichier WEB.CONFIG, et la création d'un fichier d'identification (login.aspx).  
 

Source

  • ' ------ Dans web.config -----------
  • <authentication mode="Forms">
  • <forms name=".ASPXUSERDEMO" loginUrl="login.aspx" protection="All" timeout="60" />
  • </authentication>
  • ' Oblige le passage par la page login.aspx pour s'identifier lors de l'arrivée sur toutes les pages du projet
  • <authorization>
  • <deny users="?" />
  • <allow users="*" />
  • </authorization>
  • ' Autorisation a tous les utilisateurs identifiés, interdiction au non connus
  • ' -------- Page Login.aspx ------------
  • <form method="post" runat="server">
  • <table cellSpacing="0" cellPadding="2" align="center" border="0">
  • <TR><TD>Login :</TD>
  • <TD><asp:textbox id="login" runat="server"></asp:textbox></TD>
  • </TR>
  • <TR><TD><DIV align="center">Mot de Passe :</DIV></TD>
  • <TD><asp:textbox id="pass" runat="server" TextMode="Password"></asp:textbox></TD>
  • </TR>
  • </table><br><br>
  • <asp:button id="Button1" runat="server" Text="Envoyer"></asp:button>
  • <P><P><P><asp:label id="Label1" runat="server"></asp:label></P>
  • </FORM>
  • ' --------Page Login.aspx.vb ---------------
  • Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
  • ' Vérification de l'authentification
  • Dim ODBCConnSite As String = "films"
  • Dim TmpReaderType As OdbcDataReader
  • Dim SQL As String = "Select * FROM password WHERE password.login='" & login.Text & "' AND password.pass='" & pass.Text & "'"
  • TmpReaderType = MyODBCReader(SQL, ODBCConnSite)
  • If TmpReaderType.Read Then
  • FormsAuthentication.RedirectFromLoginPage(login.Text, False)
  • Else
  • Label1.Text = "Les éléments fournis ne permettent pas de vous authentifier."
  • End If
  • End Sub
  • ' Cet exemple s'appuie sur une requette lancée sur une table et dont le résultat est un Datareader, ainsi si on peut lire ce reader (TmpReaderType.Read) rendra TRUE et validera l'authetification. A l'inverse elle restera sur cette même page et affichera le texte dans le label.
' ------ Dans web.config -----------

<authentication mode="Forms">
  <forms name=".ASPXUSERDEMO" loginUrl="login.aspx" protection="All" timeout="60" />
</authentication>
' Oblige le passage par la page login.aspx pour s'identifier lors de l'arrivée sur toutes les pages du projet

<authorization>
 <deny users="?" />
 <allow users="*" />
</authorization>
' Autorisation a tous les utilisateurs identifiés, interdiction au non connus

' -------- Page Login.aspx ------------

<form method="post" runat="server">
<table cellSpacing="0" cellPadding="2" align="center" border="0">
<TR><TD>Login :</TD>
<TD><asp:textbox id="login" runat="server"></asp:textbox></TD>
</TR>
<TR><TD><DIV align="center">Mot de Passe :</DIV></TD>
<TD><asp:textbox id="pass" runat="server" TextMode="Password"></asp:textbox></TD>
</TR>
</table><br><br>
<asp:button id="Button1" runat="server" Text="Envoyer"></asp:button>
<P><P><P><asp:label id="Label1" runat="server"></asp:label></P>
</FORM>

' --------Page Login.aspx.vb ---------------
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
 ' Vérification de l'authentification
 Dim ODBCConnSite As String = "films"
 Dim TmpReaderType As OdbcDataReader
 Dim SQL As String = "Select * FROM password WHERE password.login='" & login.Text & "' AND password.pass='" & pass.Text & "'"

  TmpReaderType = MyODBCReader(SQL, ODBCConnSite)
  If TmpReaderType.Read Then
    FormsAuthentication.RedirectFromLoginPage(login.Text, False)
  Else
    Label1.Text = "Les éléments fournis ne permettent pas de vous authentifier."
  End If
End Sub

' Cet exemple s'appuie sur une requette lancée sur une table et dont le résultat est un Datareader, ainsi si on peut lire ce reader (TmpReaderType.Read) rendra TRUE et validera l'authetification. A l'inverse elle restera sur cette même page et affichera le texte dans le label.
   

Conclusion

Pour une présentation rapide des autre méthodes d'authentification :
    http://samples.gotdotnet.com/quickstart/aspplus/

PS: afin d'utiliser la fonction de requettage sur la base des Login/Mdp, voyez ici :
- http://www.asp-php.net/scripts/asp.net/lib_class_mysql.php

Bon développement

Romelard Fabrice (Alias F___)
 

Commentaires et avis

signaler à un administrateur
Commentaire de Tylvalen le 04/12/2002 12:59:12

Salut,
juste une question : tu ne ferme pas ta connection à la base ?

signaler à un administrateur
Commentaire de fabrice69 le 04/12/2002 13:42:07 administrateur CS

Si il vaut mieu meme si le framework s'en occupe.
Le script ci-dessus est juste un exemple, à vous de l'adapter à votre cas (couche d'acces au données particulières, ...).

F___

signaler à un administrateur
Commentaire de marloon le 18/02/2003 13:11:30

Salut,

j'essaie depuis plusieurs jours de mettre cette source en pratique mais le compilateur me renvoie toujours ce message, je ne comprends pas pourquoi.
Quelqu'un peu m'aider ?
Merci .

Compiler Error Message: BC30001: Statement is not valid in a namespace.

Source Error:



Line 1:  
Line 2:  
Line 3:  Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Line 4:  ' Vérification de l'authentification
Line 5:  Dim ODBCConnSite As String = "bd"

signaler à un administrateur
Commentaire de fabrice69 le 18/02/2003 13:47:22 administrateur CS

Il faut installer le module ODBC pour .NET
Cf le site de MS &gt; ODBC.NET

http://msdn.microsoft.com/downloads/default.asp?url=/downloads/sample.asp?url=/msdn-files/027/001/668/msdncompositedoc.xml

F___

signaler à un administrateur
Commentaire de BlackGoddess le 17/07/2003 12:27:23

super, ta source m'a bien aidé :)

comment fait-on pour changer la page par defaut apres la redirection ? (default.aspx)

^

signaler à un administrateur
Commentaire de marloon le 17/07/2003 13:03:32

D'aprés moi tu peux pas avec cette authentification car elle te ramêne direct à la page que tu a demandé en premier même si c pas default.aspx.
Toutes les pages du repertoire sont ainsi protégées(grace au web.config). Il est possible de paramétrer le "protection="All"" mais je ne sais pas comment.
Fabrice t'en diras certainement +.

signaler à un administrateur
Commentaire de BlackGoddess le 17/07/2003 14:03:08

-&gt; elle me ramene direct a la page que j'ai demandé en 1er, sauf s'il n'y a pas de page demandé en 1er, dans ce cas elle redirige vers default.aspx, c ca que je voudrais changer

signaler à un administrateur
Commentaire de fabrice69 le 17/07/2003 14:50:29 administrateur CS

Ben pour ca c'est avec IIS que tu parametres la page d'entrée, pas avec le login.aspx

L'authentification ne fait que valider (lors de l'arrivée sur une des pages du site, défaut ou non) que tu sois autorisé à y entrer.

Pour la définition de la page d'accueil, ca se passe sur les propriétés ton application WEB (via IIS).

F___

signaler à un administrateur
Commentaire de BlackGoddess le 17/07/2003 17:44:10

ok.

sinon, je voudrais sauver le nom de l'utilisateur pour la session.
je fais donc Session.Add("UserName", UserName);

le pb est que j'ai permis les cookies :
FormsAuthentication.RedirectFromLoginPage(UserName, chkSave.Checked);

et, lorsque l'utilisateur a choisi de ne plus avoir a taper son passe, il ne passe plus par la page login.aspx, donc je ne sais pas comment récupérer le UserName ?!

signaler à un administrateur
Commentaire de marloon le 17/07/2003 18:02:17

page.user.identity.name

Voilou !!

signaler à un administrateur
Commentaire de BlackGoddess le 18/07/2003 09:55:30

mmh ... depuis hier je n'arrive pas a l'utiliser page.user.identity.name

il faut utiliser des namespace spéciaux ? instancier quoi ?

signaler à un administrateur
Commentaire de BlackGoddess le 18/07/2003 10:05:16

c bon merci, en fait je pensais pas ca aussi simple, je cherchais plus compliqué
et comme un boulet j'avais laissé tout en min (je code en c#)

signaler à un administrateur
Commentaire de BlackGoddess le 18/07/2003 14:30:10

encore une question, sur l'utilisation des cookies :

j'ai une table 'Users' avec 3 champs : 'IDUser', 'UserName', 'UserPass'.

apres la 1ere authentification, si l'utilisateur decide d'enregistrer ses informations, je fais

FormsAuthentication.RedirectFromLoginPage(UserID, true);

ainsi avec Page.User.Identity.Name sur les autres formulaires je peux utiliser ma table pour la gestion des droits.

mais, si l'utilisateur décide de changer son mot de passe, cela n'affectera pas le cookie, et donc le changement de mot de passe est inutile. Comment faire pour rendre le cookie erroné apres changement de mot de passe ?

signaler à un administrateur
Commentaire de BlackGoddess le 24/07/2003 16:46:01

j'ai essayé en mettant

FormsAuthentication.RedirectFromLoginPage(UserID + "-" + UserPass, true);

ca marche pas mieux

signaler à un administrateur
Commentaire de marloon le 24/07/2003 19:11:00

Si tu faisais en sorte que l'utilisateur soit automatiquement déloggué aprés un changement de pass ?
Essayes ca :

FormsAuthentication.SignOut()

Ca devrait aller... mais c peut etre pas la meilleure solution.
C'est ce que je ferai moi, si y'a d'autre solution ?

signaler à un administrateur
Commentaire de BlackGoddess le 25/07/2003 10:09:36

d'accord, je vais essayer apres un changement de passe :)
le pb est que j'ai une base de comptes qui est commune a plusieurs bases :/

signaler à un administrateur
Commentaire de azuu le 11/08/2003 22:50:56

g une ptite question avec ce mode de login, comment peut on autoriser seulement une connexion simultannée par user?

signaler à un administrateur
Commentaire de Mia le 08/01/2004 16:45:59

alut


Je viens de lire ton code, que je trouve très interessant mais il me pose un petit prob. En fait, ce que j'aimerais, c qu'il ne lance pas automaitquement la fenetre de login lors de l'appel de n'importe quelle page du site.
ce que je veux faire faire, c une partie de site "normale" et une partie "Admin" et c seulement pour accèder au pages "Admin" que g besoin d'1 login form. J'espère que tu vois ce que je veux dire.

comment faire celà, as-tu une idée?

Merci

signaler à un administrateur
Commentaire de fabrice69 le 08/01/2004 17:43:31 administrateur CS

oui en spécifiant pour une page du site (toujours dans le Web.config) que cette sécurité est active.
comme par exemple :

...
&lt;/system.web&gt;
&lt;location path="Tonfichierprotege.aspx"&gt;
  &lt;system.web&gt;
        &lt;authorization&gt;
          &lt;deny users="?"/&gt;
        &lt;allow users="*"/&gt;
    &lt;/authorization&gt;

  &lt;/system.web&gt;

F___
&lt;/location&gt;
...

signaler à un administrateur
Commentaire de Mia le 09/01/2004 10:29:44

Salut, c encore moi.

Je suis parvenu à faire en sorte que la page login.aspx s'affiche que lorsque je lance ma page http://localhost/monsite/admin.aspx

Si je lance la page par défaut http://localhost/monsite (je ne tape pas le nom de la page default.htm car il est spécifié dans les paramètres d'iis), c bien cette page (default.htm) qui apparait.

Maintenant, si je lance la page http://localhost/monsite/admin.aspx , je suis redirigé vers la page login.aspx. Dans cette page, si je tape le bon user et bon pwd, je reçois un msg d'erreur disant "ressource introuvable", ce qui est logique car je suis redirigé automatiquement vers la page default.aspx (au lieu de admin.aspx) qui n'existe pas. Je ne comprends pas pq et ou est spécifié ce nom de page.

Sorry pour toutes ces questions, je débute.

signaler à un administrateur
Commentaire de hisham91 le 16/11/2004 16:19:47

Salut,

J'essai désespéremment de codé en c#.net bref je veux récupérer une valeur de ma BDD et le faire afficher dans un "label" cependant les label et textbox n'ont pas de propriété permettant de les relier à une base de données comme le font les listbox et dropdownlist ! Franchement sa me dit rien de migrer mes appli ASP vers ASP.Net ...

PLEEEEEAAAASSSE  can you help me ??

signaler à un administrateur
Commentaire de hisham91 le 16/11/2004 16:21:05

Puré je suis pas sorti de l'auberge :) votre dernière réaction date de 9 janvier 04

aucune chance :'(

signaler à un administrateur
Commentaire de delfossf le 30/06/2006 04:38:00

Ce post est assez vieux mais je te remercie beaucoup, tu m'as fait gagné énormément de temps.

signaler à un administrateur
Commentaire de de saint meen le 13/10/2006 05:08:30

Merci à CodesSources de laisser tous ces vieux posts toujours pratiques !

signaler à un administrateur
Commentaire de tounsi87 le 21/12/2007 22:17:32

merci

Ajouter un commentaire



Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Comparez les prix Nouvelle version

Photothèque Nouveau !



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,281 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.