2010-12-07 29 views
0

J'ai quelques pages XHTML. Lorsque je lance le projet, je peux voir la page même si je ne suis pas connecté. Lorsque je tape directement dans la barre d'adresse, je peux accéder à la page.Comment sécuriser les pages Web lorsque l'utilisateur n'est pas connecté

Comment puis-je protéger mes fichiers XHTML à l'exception du login.xhtml? J'ai essayé d'ajouter une contrainte de sécurité à FacesConfig mais il bloque tous mes *.xhtml même le login.xhtml.


Mise à jour

j'ai ajouté sur mon fichier web.xml

<security-constraint> 
    <display-name>Protection</display-name> 
    <web-resource-collection> 
     <web-resource-name>Protection</web-resource-name> 
     <description>Protection</description> 
     <url-pattern>/secured/*</url-pattern> 
    </web-resource-collection> 
</security-constraint> 

Je mets tous mes fichiers attendent login.xhtml dans le dossier /secure. Mais quand j'exécute le projet, je peux toujours y accéder quand je tape .../secured/*.jsf dans la barre d'adresse. Comment puis-je protéger quand je suis en train de naviguer hors ligne ou non connecté.

Répondre

2

J'ai essayé d'ajouter une contrainte de sécurité à FacesConfig mais il bloque tout mon *.xhtml même le login.xhtml

Le faces-config.xml a aucune notion de contraintes de sécurité. Probablement, vous confondez avec web.xml. Vous devez rendre le url-pattern de la contrainte de sécurité plus spécifique. N'utilisez pas *.xhtml, mais utilisez /secured/* ou ainsi et mettez les fichiers restreints dans ce dossier (attendez-vous du fichier login.xhtml bien sûr). En outre, vous pouvez demander au navigateur et non de mettre en cache ces pages. Vous pouvez y parvenir par un Filter qui est mis en correspondance sur le même url-pattern et fait ce qui suit dans la méthode doFilter():

HttpServletResponse hsr = (HttpServletResponse) response; 
hsr.setHeader("Cache-Control", "no-cache, no-store, must-revalidate"); // HTTP 1.1. 
hsr.setHeader("Pragma", "no-cache"); // HTTP 1.0. 
hsr.setDateHeader("Expires", 0); // Proxies. 
chain.doFilter(request, response); 

Avec cela, l'utilisateur final ne sera pas en mesure d'afficher la page du cache du navigateur. N'oubliez pas d'effacer le cache du navigateur avant de le tester.

+0

Ouais désolé! Je voudrais dire web.xml. – Steffi

+0

MERCI POUR VOTRE RÉPONSE, je vais essayer ça !!! – Steffi

+2

De rien. Tu n'as pas besoin de crier comme ça, en tant que sourd-né, je n'entendrai jamais ça. – BalusC