Bonjour,
est-ce qu'il y a une taglib JSF2 ou primefaces qui permet la redirection à l'interieur d'une page xhtml ? 20
Bonjour,
est-ce qu'il y a une taglib JSF2 ou primefaces qui permet la redirection à l'interieur d'une page xhtml ? 20
Pour faire de la redirection tu crée une methode qui te renvoi String contenant le nom de la page exemple si ta page s'appelle 'page.xhtml' tu retourne 'page'
Merci pour ta réponse, mais ce n'est ce que je cherche,
Mon but est :
si quelqu'un (pas encore authentifié) essaie d'accéder à la page d'accueil du site par la saisie de son lien dans la barre d'adresse, l'application doit lui rediriger automatiquement vers la page d'authentification.
Ce cas peut être géré en utilisant une balise de redirection comme <c:redirect> de JSTL mais je trouve que JSF ne possède pas cette option
Moi je te conseille de voir du coté de spring sécurity il le fait trés bien
Bonjour,
même si Spring Security répond à la question, je pense qu'il ne faut pas toujours prendre un lib externe (ajouter de nouvelles dépendances) quand le problématique qu'on veut régler peut se résoudre facilement et totalement par les APIs fournis par le JDK.
Je pense aussi surtout qu'il faut un minimum (quand c'est possible et qu'on a le temps) savoir utiliser les solutions proposé par le JDK seul.
En l'occurrence, si tu veux rediriger un user vers une autre quand il n'est pas encore authentifié, tu peux utiliser un filtre de servlet comme ceci:
(1) Voici le code du filtre
(2) tu ajoutes ceci dans ton web.xml
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34 public class LoginFilter implements Filter { private static Logger logger = LoggerFactory.getLogger(LoginFilter.class); @Override public void init(FilterConfig filterConfig) throws ServletException { } @Override public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { HttpServletRequest req = (HttpServletRequest) request; HttpServletResponse resp = (HttpServletResponse) response; HttpSession session = req.getSession(false); User user = (session != null) ? (User) session.getAttribute("user") : null; if (user == null) { // Utilisateur non authentifié, on redirige vers la page de login. logger.warn("Tentative d'ouverture d'une page nécessitant une connexion, redirection vers la page de login !"); String loginURL = req.getContextPath() + "/login.jsf"; resp.sendRedirect(loginURL); } else { // Utilisateur loggué, on laisse continuer la requête. chain.doFilter(req, resp); } } @Override public void destroy() { } }
Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 <filter> <description>Filtre permettant de vérifier si un utilisateur s'est authentifié ou pas avant d'accéder à une certaine page où le filtre est appliquée</description> <filter-name>Login Filter</filter-name> <filter-class>net.project.servlet.filter.LoginFilter</filter-class> </filter> <filter-mapping> <filter-name>Login Filter</filter-name> <!-- Bouhh, si tu veux accéder à la page de profile, il d'abord t'authentifier, allez, je te redirige ... --> <url-pattern>/profile.jsf</url-pattern> </filter-mapping>
Remarque: Si tu utilises Servlet 3.0, tu peux directement utiliser les annotations au lieu d'ajouter des choses dans le web.xml. Dans ce cas, tu prends l'annotation @WebFilter que tu ajouter directement sur la classe LoginFilter.
PS: La classe 'User' est la classe qui représente ton utilisateur dans ton projet (j'aurais pu l'appeler Utilisateur ...) à ne pas confondre avec une classe d'une quelconque autre api
Cordialement,
Nous n'héritons pas de la terre de nos parents, nous l'empruntons à nos enfants.
Le chat du site est aussi ici pour aider. Ne pas hésiter à visiter !
J'aimerais savoir s'il vous plait car je suis encore débutant avec Prime Faces pour la redirection d'une page 1 vers une page 2 à travers une méthode qui retourne un String par exemple on fais la même chose qu'avec rich faces çad un commandbutton avec une action=appel de la méthode ?
Oui c'est la même chose car c'est pas le jeu de composant qui le fait mais plutôt jsf
coté xhtml
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 <p:commandButton value="Save" action="#{personBean.savePerson}"/>
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 public string savePerson(){ return "page1"; }
Partager