OVH Cloud OVH Cloud

vérifier la session

3 réponses
Avatar
LR
Salut,

Je cherche une méthode propre pour valider la session d'un utilisateur
identifié sur mon application J2EE. J'ai un formulaire de login. Si le
username-password est correct, j'enregistre une valeur dans la session
indiquant que l'utilisateur est connecté. Ensuite, dans mes pages JSP je
dois vérifier avant toute chose que l'utilisateur est bien connecté, sinon
le renvoyer au formulaire de login.

J'ai bien entendu pensé à quelque chose comme
<%
if (session.getAttribute("loggedIn")==null) {
%>
<jsp:forward page="login.jsp"/>
<%
}
else {
%>

<html>
<head>
etc.....

mais j'essaie de bien séparer la logique et la présentation et j'évite donc
je mettre de la logique dans mes pages JSP. Du coup ce code m'apparaît un
peu comme un gros point noire au milieu de la figure.

J'ai pensé à une autre technique qui me plaît nettement plus mais que j'ai
du mal à mettre en oeuvre. Il faudrait que mes pages JSP dans lesquelles je
dois faire une validation passent d'abord par une servlet qui vérifierait la
session et redirigerait l'utilisateur vers le formulaire de login si elle
n'est pas valide ou vers la page demandée si elle est valide.

Pour ça je pourrais ajouter dans mon web.xml quelque chose comme
<servlet-mapping>
<servlet-name>SessionCheck</servlet-name>
<url-pattern>*.jspx</url-pattern>
</servlet-mapping>

ou

<servlet-mapping>
<servlet-name>SessionCheck</servlet-name>
<url-pattern>/user/*</url-pattern>
</servlet-mapping>

mais j'ai ensuite des problèmes pour le forward au niveau de SessionCheck...

Quelqu'un aurait un exemple ou des références ?

Merci d'avance
Lilian

3 réponses

Avatar
Sebastien Annedouche
Tu peux faire un test simple avec 'session.isNew()', indiquant que la session vient d'être créée.
Si cette méthode te retourne 'true' dans une JSP qui n'est pas login.jsp, c'est que l'utilisateur
n'est pas connecté ou bien que sa session a expiré => tu forwardes à login.jsp.

Sébastien

LR wrote:
Salut,

Je cherche une méthode propre pour valider la session d'un utilisateur
identifié sur mon application J2EE. J'ai un formulaire de login. Si le
username-password est correct, j'enregistre une valeur dans la session
indiquant que l'utilisateur est connecté. Ensuite, dans mes pages JSP je
dois vérifier avant toute chose que l'utilisateur est bien connecté, sinon
le renvoyer au formulaire de login.

J'ai bien entendu pensé à quelque chose comme
<%
if (session.getAttribute("loggedIn")==null) {
%>
<jsp:forward page="login.jsp"/>
<%
}
else {
%>

<html>
<head>
etc.....


Avatar
Gabriel
Salut : implémentes un modèle MVC :

Solution 1 :
une servlet te sert de controleur : toutes tes urls sont de la forum :
http://site:8080/monsite/controler?event=monCompte

Tu analyses la variable event dans la servlet controleur et tu forwardes
la requete soit vers une jsp soit vers une servlet.
En ce qui concerne ton pb d'authentification, avant de "router" la
requete, tu peux demander à une classe statique authificator de te
renvoyer true ou false en fonction.

Solution 2 :
utilise Struts

bon courage !
Avatar
LR
Merci pour ta réponse, cette solution me semble bonne. Malheureusement je ne
désire pas utiliser de servlet contrôleur :-(

Je pense qu'un Filter pourrait être une bonne solution mais je ne trouve pas
d'exemple qui collerait à ce que je veux...

Merci d'avance
Lilian


Salut : implémentes un modèle MVC :

Solution 1 :
une servlet te sert de controleur : toutes tes urls sont de la forum :
http://site:8080/monsite/controler?event=monCompte

Tu analyses la variable event dans la servlet controleur et tu forwardes
la requete soit vers une jsp soit vers une servlet.
En ce qui concerne ton pb d'authentification, avant de "router" la
requete, tu peux demander à une classe statique authificator de te
renvoyer true ou false en fonction.

Solution 2 :
utilise Struts

bon courage !