J'ai une application JSF et j'aimerais que l'utilisateur se déconnecte automatiquement après une période d'inactivité. Existe-t-il un moyen standard de faire cela?Déconnexion automatique dans l'application JSF
Répondre
Généralement, le serveur (Tomcat, Glassfish ...) qui héberge l'application Web gère un délai d'attente pour une session.
Par exemple, dans Tomcat, vous pouvez définir le délai d'attente de session pour une application web particulière en ajoutant les lignes folowing dans le fichier web.xml
:
<session-config>
<session-timeout>30</session-timeout>
</session-config>
Cela va régler le délai d'attente à 30 minutes.
Lorsqu'un utilisateur n'envoie aucune requête pendant une durée supérieure à ce délai défini, la session sur le serveur est invalidée. Si l'utilisateur tente de se reconnecter après l'invalidation de la session, il sera généralement redirigé vers une autre page ou vers une page d'erreur.
Vous pouvez développer votre propre filtre JSF qui redirigera automatiquement l'utilisateur vers une page timeout.html
. Voici un exemple d'un tel filtre:
public class TimeoutFilter implements Filter {
private static final String TIMEOUT_PAGE = "timeout.html";
private static final String LOGIN_PAGE = "login.faces";
public void init(FilterConfig filterConfig) throws ServletException {
}
public void doFilter(ServletRequest request, ServletResponse response, FilterChain filterChain) throws IOException, ServletException {
if ((request instanceof HttpServletRequest) && (response instanceof HttpServletResponse)) {
HttpServletRequest requestHttp = (HttpServletRequest) request;
HttpServletResponse responseHttp = (HttpServletResponse) response;
if (checkResource(requestHttp)) {
String requestPath = requestHttp.getRequestURI();
if (checkSession(requestHttp)) {
String timeoutUrl = hRequest.getContextPath() + "/" + TIMEOUT_PAGE;
responseHttp.sendRedirect(timeoutUrl);
return;
}
}
filterChain.doFilter(request, response);
}
private boolean checkResource(HttpServletRequest request) {
String requestPath = request.getRequestURI();
return !(requestPath.contains(TIMEOUT_PAGE) || requestPath.contains(LOGIN_PAGE) || requestPath.equals(hRequest.getContextPath() + "/"));
}
private boolean checkSession(HttpServletRequest request) {
return request.getRequestedSessionId() != null && !request.isRequestedSessionIdValid();
}
public void destroy() {
}
}
- 1. ouverture de session automatique sur SEAM + JSF
- 2. Code de déconnexion dans JSP
- 3. Page vierge dans JSF
- 4. Désactiver commandButton dans JSF
- 5. JSF, datable dans datatable
- 6. Composant d'arbre dans JSF
- 7. FileSystemWatcher et déconnexion réseau?
- 8. Déconnexion avec facebook
- 9. Problème de déconnexion ou de déconnexion dans asp.net C# utilisant la page maître et l'authentification Windows
- 10. Etiquettes internationalisées dans JSF/Facelets
- 11. ID dynamique dans JSF/Seam
- 12. Comment réduire javax.faces.ViewState dans JSF
- 13. JSF dans les applications d'entreprise
- 14. Sécurité de base dans JSF
- 15. Authentification par formulaires ASP.NET - Déconnexion
- 16. HttpRequestValidationException lors de la déconnexion
- 17. JSF, Hibernate
- 18. Déconnexion du portail enfant Problème
- 19. Délai d'attente de déconnexion avec la boucle de réinitialisation
- 20. Comment connecter une fonction de déconnexion côté serveur à la déconnexion du service d'authentification ASP.Net
- 21. jquery.autocomplete.js déclenchant la sélection et la déconnexion de la radio
- 22. Chargement de la charge ajax dans JSF
- 23. Plusieurs lignes par enregistrement dans JSF?
- 24. JSF - appeler FacesContext.getCurrentInstance() dans un contexte statique
- 25. Struts, JSF comme cadre MVC dans .Net
- 26. Comment contourner la validation dans dataTable? JSF
- 27. montrant 1-n relations dans JSF
- 28. Connexion automatique dans CakePHP
- 29. Hyperlien automatique dans Excel
- 30. Composants personnalisés JSF ResponseWriter
Ceci échouera lorsque vous accéderez pour la première fois à une URL qui ne figure pas dans votre méthode checkResource. n'est-ce pas? n'obtiendriez-vous pas alors un comportement expiré de session même si vous accédez simplement à la page pour la première fois? – 0m4r