2009-08-03 8 views
1

Mon webapp doit connexion automatique lorsque l'accès utilisateur l'URL app:ouverture de session automatique sur SEAM + JSF

exemple:

http://myapp/home.xhtml?token={3bcdc006-05fc-4ce1-953a-17375edcf2a2} 

on my pages.xml i have the following: 
<pages xmlns="http://jboss.com/products/seam/pages" 
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
     xsi:schemaLocation="http://jboss.com/products/seam/pages http://jboss.com/products/seam/pages-2.1.xsd" 

     no-conversation-view-id="/home.xhtml" 
     login-view-id="/login.xhtml"> 

Quand aucune conversation est active par défaut est home.xhtml et Lorsque l'utilisateur atteint le home.xhtml avec un paramètre de jeton, je souhaite qu'une action soit appelée et que je me connecte à l'utilisateur.

un tutoriel ou un exemple pour cela?

et si aucun paramètre est appelé je voudrais soulever un org.jboss.seam.security.AuthorizationException afin que l'utilisateur redirigés vers error.xhtml

Merci à l'avance

Répondre

3

Lit les paramètres de la page dans Seam Documentation.

Dans votre pages.xml vous préciser quelque chose comme:

<pages> 
     <page view-id="/home.xhtml" action="#{backingBean.checkToken}"> 
      <param name="token" value="#{backingBean.token}"/> 
     </page> 
</pages> 

Cela peupler la token variable avec la valeur de l'URL et appeler la méthode checkToken(). Dans votre méthode checkToken(), vous pouvez vérifier si l'utilisateur est déjà connecté, sinon vérifiez que la token a été peuplée, et sinon, jeter le AuthorizationException

+0

Recherche sur 2.1 docs est juste ce que je avais besoin, merci pour la règle de navigation. Réponse parfaite. –

0

Ceci est similaire à la question

get-request-and-session-parameters-and-attributes-from-jsf-pages

Certains googler montre que vous pouvez accéder à ces paramètres en utilisant le contexte des visages et construit sur la carte, param, Wich a vos paramètres de demande. Donc, je suggère que vous auriez un bean de requête qui est chargé sur home.xhtml qui vérifie le facesContext et lève une exception org.jboss.seam.security.AuthorizationException pour que JBOSS gère la connexion.

FacesContext ctx = FacesContext.getCurrentInstance(); 
String requestToken = ctx.getApplication().createValueBinding("#{param.token}").getValue(ctx); 
Questions connexes