2010-08-19 12 views
1

espérons que vous pouvez me aider: Je travaille avec j_security_check et ont ce problèmeproblème url j_security_check

J'ai une page de profil qui doit être limité à tout utilisateur unloged, donc j'ajouter une contrainte de sécurité dans le fichier web.xml et fonctionne très bien si je tente d'accéder par la barre adresse, cela me montre la page de connexion parfaitement ok

maintenant le problème est que: dans ma page d'index par exemple:

http://localhost/mySite/index.xhtml

ont un lien

<h:commandLink action="user/Profile" />

cela me redirigent vers la page de profil ok, mais l'URL toujours le même

http://localhost/mySite/index.xhtml

si j_security_check ne montrent pas la page de connexion autant que je l'ai vu j_security_check travaille avec url et JSF ne le font pas et si dans la page de profil presse un lien vers ex: myimages puis maintenant l'url dit:

ex: http://localhost/mySite/user/Profile.xhtml

Pourquoi est-ce happend? Est-ce qu'il y a un moyen de réparer ceci ?? Merci à l'avance

une alternative que je l'ai utilisé est mis un comme

<a href="user/Profile.xhtml" >Profile</a>

cela me montre la page de connexion, mais si je vais au profil index.xhtml et appuyez sur ce ne trouve pas la page, car me redirige vers:

ex: http://localhost/mySite/user/user/Profile.xhtml

Répondre

1
<h:commandLink action="user/Profile" /> 

A h:commandLink et h:commandButton incendies une demande HTTP POST (par le h:form) à la page en cours qui à son tour vers l'avant à la ressource donnée.

Vous ne souhaitez pas utiliser POST pour la navigation de page à page. Ce n'est pas seulement une mauvaise expérience utilisateur (l'URL ne change pas, un comportement inintéressant en remontant/retransmettant l'historique du navigateur), mais aussi pas de convivialité SEO (searchbots n'indexe pas le POST).

Vous devez le remplacer par h:outputLink ou, comme vous l'avez constaté, par un simple élément <a> si vous n'avez besoin d'aucune fonctionnalité JSF-ish.En ce qui concerne votre dernier problème d'aller à la mauvaise URL (avec le chemin dupliqué): ceci est résolu quand vous utilisez h:outputLink. JSF prendra alors en compte le chemin de contexte actuel.