question simple, Ok. J'ai une application JSF, contenant une page de connexion. Le problème est que si l'utilisateur charge la page de connexion, la quitte pendant un certain temps, puis tente de se connecter à la session expire et une exception ViewExpiredException est levée. Je pourrais rediriger vers la connexion quand cela se produira, mais ce n'est pas très facile. Comment puis-je autoriser ce flux à se connecter correctement sans tentative supplémentaire?temps de connexion sur JSF
Répondre
Mise à jour
Au Mojarra 2.1.19/2.2.0 vous pouvez maintenant définir l'attribut transitoire de la <f:view>
true:
<f:view transient="true">
Your regular content
</f:view>
Vous pouvez lire dans le Balusc's blog ici :
http://balusc.blogspot.com.br/2013/02/stateless-jsf.html
originale
Si vous utilisez Facelets vous pouvez créer votre propre ViewHandler gérer ceci:
public class LoginViewHandler extends FaceletViewHandler
{
public LoginViewHandler(ViewHandler viewHandler)
{
super(viewHandler);
}
@Override
public UIViewRoot restoreView(FacesContext ctx, String viewId)
{
UIViewRoot viewRoot = super.restoreView(ctx, viewId);
if (viewRoot == null && viewId.equals("/login.xhtml"))
{
// Work around Facelet issue
initialize(ctx);
viewRoot = super.createView(ctx, viewId);
ctx.setViewRoot(viewRoot);
try
{
buildView(ctx, viewRoot);
}
catch (IOException e)
{
log.log(Level.SEVERE, "Error building view", e);
}
}
return viewRoot;
}
}
Change "/login.xhtml" à votre page de connexion. Cela vérifie si elle peut restaurer votre vue, et si elle ne peut pas et la vue actuelle est votre page de connexion, il va créer et créer la vue pour vous.
Set dans votre face-config.xml comme suit:
<application>
<!-- snip -->
<view-handler>my.package.LoginViewHandler</view-handler>
</application>
Si vous utilisez JSF sans Facelets (c.-à-JSPs), vous pouvez essayer d'avoir la classe étendre ViewHandlerWrapper - noter que buildView() sera ne pas être disponible Heureusement, createView() en lui-même va régler la vue correctement, mais je ne suis pas sûr à 100% avec JSF/JSP.
Couple de solutions légèrement aki:
- (Très hacky), utilisez une balise
<meta http-equiv="refresh" content="5"/>
pour recharger automatiquement la page de temps en temps. - Utilisez une fonction JavaScript pour envoyer périodiquement une requête « ping » au serveur pour garder la session en vie.
Nous utilisons IceFaces au travail qui détecte automatiquement quand votre session a expiré et affiche un pop-up vous alertant sur le fait. Mais nous avons encore parfois des problèmes sur la page de connexion pour une raison quelconque.
Il semble que votre page de connexion est portée de la session, quand il n'a pas vraiment besoin d'être. La portée de la requête devrait convenir à une page de connexion (puisque, de manière réaliste, il ne devrait pas y avoir de session en cours avant que l'utilisateur ne se connecte). Une fois que l'utilisateur se connecte, vous avez peut-être recopié ce problème, mais les idées de Phill sont très bonnes à partir de là.
Avec jsp, vous pouvez désactiver la session pour une page, y compris la présente directive <%@ page session="false" %>
. Il doit y avoir quelque chose de similaire pour jsf.
- 1. En-tête JSF avec composant de connexion?
- 2. PostgresSQL Erreur de connexion de temps en temps
- 3. ouverture de session automatique sur SEAM + JSF
- 4. Sécurité de base dans JSF
- 5. Temps de retard sur clic
- 6. Comment définir l'indicateur HttpOnly sur JSF/Richfaces
- 7. Glassfish se connecte sur JSF Page
- 8. Combien de connexion au serveur mySQL en même temps?
- 9. DB2 Client v9.5 sur Win 2003 Prend beaucoup de temps pour établir la connexion
- 10. Problème de simultanéité JSF
- 11. Câblage de projet JSF
- 12. Problème de mélange JSF/JSP
- 13. Impossible de lire l'ID sur les composants JSF
- 14. JSF, Hibernate
- 15. Intégration de JQuery avec JSF
- 16. La connexion mysql se ferme après un certain temps? (PHP)
- 17. JSF: Comment mettre à jour une base de bean d'une session sur un autre bean session?
- 18. Désactiver commandButton dans JSF
- 19. Utilisation de kaptcha avec JSF
- 20. messages jsf: ajout de lien
- 21. Mélanger jsp et jsf
- 22. Authentification et autorisation JSF
- 23. JSF prinicpal: javax.servlet.ServletException
- 24. JSF renderers - using templates
- 25. problème avec JSF h: commandButton
- 26. Navigation JSF rediriger vers la page précédente
- 27. Composants personnalisés JSF ResponseWriter
- 28. Déploiement d'une application JSF sur un cluster Glassfish
- 29. Test de connexion UDP sur BlackBerry Simulator
- 30. Conflits d'attributs JSF/CSS
Toute idée comment faire cela dans JSF 2? –