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 :
Un utilisateur fait appel à une page quelconque du site qui nécessite une validation
Dans la page deméndée, on vérifie si l'objet Session possède la valeur convenue, par exemple Session("Access")="Valide"
Si oui, on laisse passer l'utilisateur
Sinon, on le redirige vers la page standard de connexion, en prenant la peine de passer en paramètre l'url demandée, ce qui permettra d'envoyer l'utilisateur directement sur la page demandée
La page de connexion demande un nom de login et un mot de passe et appelle une page de validation
La page de validation interroge une base de données pour vérifier si l'utilisateur est connu.
Si oui, elle le redirige vers la page demandée (dont l'url a suivi en paramètre)
Sinon, elle le renvoir vers la page de connexion..
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 : <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.