Mon application JSF redirige tout utilisateur qui n'est pas connecté à la page de connexion. Lorsque l'utilisateur se connecte, je souhaite que l'application redirige vers la page que l'utilisateur a initialement saisie dans la barre d'adresse du navigateur. Mais je ne sais pas comment accéder à l'url que l'utilisateur a initialement saisi, car il est automatiquement redirigé vers la page de connexion que j'ai configurée dans le fichier web.xml.JSF 2.0: Comment obtenir l'URL qui est entrée dans la barre d'adresse du navigateur
Répondre
La sécurité gérée par conteneur ne dispose pas d'installations fournies par l'API pour cela. Votre meilleur pari est de remplacer le <login-config>
par une classe Filter
qui fait à peu près comme ceci:
HttpServletRequest httpreq = (HttpServletRequest) request;
HttpServletResponse httpres = (HttpServletResponse) response;
if (httpreq.getUserPrincipal() == null) {
httpreq.getSession().setAttribute("from", httpreq.getRequestURI());
httpres.sendRedirect("login.jsf");
} else {
chain.doFilter(request, response);
}
Et puis dans votre truc de connexion:
request.login(username, password);
externalContext.redirect((String) request.getSession().getAttribute("from"));
Je viens de creuser cette réponse, en pensant au filtre pour [cette question] (http://stackoverflow.com/questions/4413407/). Bonne réponse, bien sûr. Il craint vraiment qu'il n'y ait pas d'API pour cela - cela semble être un cas d'utilisation assez commun. Je suis curieux: si vous supprimez '
@Matt: Oui, ça va marcher. C'est juste le nouveau remplacement programmatique de Servlet 3.0 qui fait la même chose que '
Comment configurer login-config dans le descripteur de déploiement pour que cela fonctionne correctement? Si je supprime l'authentification de formulaire, le navigateur Web définit request.userPrincipal sur une valeur mise en cache, donc (httpreq.getUserPrincipal() == null) sera faux. Si j'active l'authentification de formulaire, le filtre n'est pas exécuté du tout puisque le conteneur prend le relais. –
- 1. Comment obtenir élément de javascript JSF 2.0
- 2. Commentaires invisibles dans jsf 2.0?
- 3. Captcha dans JSF 2.0
- 4. JSF 2.0 question de navigation du menu
- 5. Comment implémenter la barre d'outils du navigateur dans Cocoa?
- 6. JSF 2.0 timer component
- 7. Barre de défilement du navigateur
- 8. JSF 2.0: Pourquoi un bean JSF est-il créé lorsqu'il est utilisé dans un composant qui n'est pas rendu?
- 9. Comment créer une barre en bas du navigateur qui est persistante?
- 10. Comment cacher la barre d'adresse du navigateur avec JavaScript
- 11. Réécrire les règles montrant dans la barre d'adresse du navigateur
- 12. Redirection sans changement d'adresse dans la barre d'adresse du navigateur
- 13. Réécrire l'url dans la barre d'adresse du navigateur aveC#?
- 14. JSF 2.0 et Hibernate erreur
- 15. Contrôleur de validation JSF 2.0
- 16. Utiliser le résultat du délégué comme entrée dans C# 2.0
- 17. JSF 2.0 - Primefaces chart color
- 18. Comment utiliser Ajax avec JSF 2.0?
- 19. Masquage de la barre d'outils/barre d'état avec javascript dans la fenêtre du navigateur ACTUEL?
- 20. Passing Parameters ins JSF 2.0
- 21. JavaScript - Obtenir la hauteur du navigateur
- 22. Comment forcer l'actualisation de datatable via AJAX dans JSF 2.0?
- 23. obtenir l'URL du navigateur Web
- 24. Richfaces Primefaces configuration JSF 2.0
- 25. Cadres CRUD JSF 2.0 recommandés
- 26. JSF 2.0 Simple page de connexion
- 27. jQuery: Obtenir la position du curseur en entrée sans code spécifique au navigateur?
- 28. Masquage de la barre d'adresse du navigateur sans recharger
- 29. Comment obtenir la clé d'une entrée Hashtable
- 30. Stylet Barre de défilement du navigateur
Donc, vous utilisez la sécurité gérée par conteneur, comme dans 'j_security_check'? – BalusC
Oui, j'utilise la sécurité gérée par conteneur. Mais lorsque je me connecte, j'utilise HttpServletRequest.login (nom d'utilisateur, mot de passe) au lieu de j_security_check. – Theo
Astuce, utilisez '@ nickname' comme' @ BalusC' pour informer les autres des commentaires sur les messages qui ne sont pas d'eux-mêmes. Sinon, vous dépendez de savoir si l'un regardera plus tard dans le sujet ou non (souvent pas). Voir aussi http://meta.stackexchange.com/questions/43019/how-do-comment-replies-work – BalusC