Suivi de connexion

Parmi les nombreuses possibilités d'utilisation de l'objet Session du modèle ASP, nous décrivons ici le suivi d'une connexion sur un site accessible seulement par mot de passe.

Le mécanisme est le suivant :

On va donc insérer dans l'en-tête de chaque page (sauf celles gérant la connexion) le code suivant (qui pourra être contenu dans un fichier include pour simplifier la création des pages) :

<% ' on regarde si la session a déjà été validée

  if Session("Access") <> "Valide" then

    Response.Redirect("/Script/Password/Connexion.asp?URL="&Request.ServerVariables("URL"))

  end if

%>

Si la session n'a pas été validée précédemment, on redirige l'utilisateur vers la page de connexion. Le passage en paramètre de l'URL à partir de laquelle la connexion a été demandée est fait grâce à l'ajout de

URL="&Request.ServerVariables("URL")

qui permettra ultérieurement de rediriger l'utilisateur vers la page qu'il avait demandé grâce  à une  redirection

Response.Redirect(Request.QueryString("URL"))

La page de connexion aura l'aspect suivant :

Nom :  

Mot de passe :

correspondant au code

<html>

<head>

<title>Connexion.asp</title>

</head>

<body>

<form method="POST" action="validation.asp?URL=<%=Request.QueryString("URL")%>">

    <p>L'accès à cette zone nécessite une connexion par mot de passe</p>

    <p>Nom : &nbsp;<input type="text" name="Nom" size="30">

    <p>Mot de passe :<input type="password" name="PassWord" size="20"></p>

    <p><input type="submit" value="Envoyer" name="B1"><input type="reset" value="Rétablir" name="B2"></p>

</form>

</body>

</html>

On notera cependant le mécanisme qui permet de transfèrer l'URL initiale dans le champ action du formulaire.

La validation de la connexion sera faite dans la page validation.asp qui ne contiendra aucun contenu affichable mais seulement un script de la forme :

<%strCnn = "driver={SQL Server};server=www.mondomaine.com;uid=xx;pwd=yy;database=base"

Set Conn = Server.CreateObject("ADODB.Connection")

Conn.Open strCnn

Nom = Request.Form("Nom")

Pass = Request.Form("Password")

Set R = Conn.Execute("Select * from Lecteurs where nom = '"&Nom&"' and password = '"&Pass&"'")

if R.eof then

    Response.Redirect("/Script/Password/Connexion.asp?URL="&Request.QueryString("URL"))

else

    Session("Access") = "Valide"

    Session("Nom") = R("Nom")

    Session("Prenom") = R("Prénom")

    Response.Redirect(Request.QueryString("URL"))

end if %>

L'objet Session auquel sont attribuées plusieurs valeurs par l'intermédiaire de variables comme "Access" ou "Nom" va permettre de s'assurer ultérieurement que l'utilisateur connecté a bien été validé.

Le code présenté ci-dessus présente l'essentiel du mécanisme permettant de valider une connexion et de la préserver au cours de la session.

Naturellement, l'objet Session n'a qu'une durée de vie limitée, et un utilisateur inactif devra se revalider au bout d'un certain temps.