2013-03-06 9 views
6

Sto usando openid4java con l'applicazione JSF ho aggiunto vincoli di sicurezza nel mio web.xml qualcosa di simile ..OpenId + JSF reindirizza l'utente alla pagina di accesso?

<security-constraint> 
    <web-resource-collection> 
     <web-resource-name>Restricted</web-resource-name> 
     <url-pattern>/core/*</url-pattern> 
     <http-method>GET</http-method> 
     <http-method>POST</http-method> 
    </web-resource-collection> 
</security-constraint> 
<login-config> 
    <auth-method>FORM</auth-method> 
    <form-login-config> 
    <form-login-page>/user/login.xhtml</form-login-page> 
    <form-error-page>/user/logout.xhtml</form-error-page> 
    </form-login-config> 
</login-config> 

Ora, quando avvio delle applicazioni e utenti vogliono accedere al

http://www.somehost:8080/myapp/core/abc.xhtml

con l'aiuto di web.xml sono in grado di mostrare all'utente una pagina di accesso ora qui metto login con openid come Google, Ya hoo ora la mia domanda è che come posso dire OpenID che il mio ritorno url è

http://www.somehost:8080/myapp/core/abc.xhtml

O se l'utente proviene da

http://www.somehost:8080/myapp/core/xyz.xhtml

questo url poi, dopo aver effettuato l'accesso con successo, l'utente andrà in questo pa ge.

+0

Si potrebbe trovare il codice da questo [link] (http://crisdev.wordpress.com/2011/03/23/openid4java-login-example/) utile. – rrufai

+0

Grazie ma non ho capito come creerà l'URL di ritorno a partire da ora sto mostrando la pagina di accesso per ogni link –

+0

ahm hai usato il filtro web? – Farnsbert

risposta

0

Per ottenere l'URL originale a cui l'utente ha tentato di accedere, provare a utilizzare la variabile RequestDispatcher.FORWARD_REQUEST_URI.

Questa variabile sarà disponibile solo se si viene reindirizzati alla pagina di accesso da un'altra pagina riservata. Pertanto, ricorda di avere un URL predefinito, nel caso in cui l'utente prenda direttamente la pagina di accesso.

Come sottolineato rrufai, una volta che l'URL originale richiesto dall'utente è disponibile, è possibile seguire i passaggi indicati in this article per reindirizzare a quell'URL, al termine dell'autenticazione.

+0

Ma sto usando il web.tag di sicurezza-contesto xml e in ogni pagina se l'utente non accede io web.xml che mostra login.xhtml pagina –

+0

Dato che stai usando JSF, puoi provare a usare [RequestDispatcher.FORWARD_REQUEST_URI] (http://docs.oracle.com/ javaee/6/api/javax/servlet/RequestDispatcher.html # FORWARD_REQUEST_URI), poiché la pagina di accesso viene aperta da un lato server avanti? Questa variabile sarà disponibile solo se vieni reindirizzato alla pagina di accesso da qualche altra pagina riservata. Pertanto, ricorda di avere un URL predefinito, nel caso in cui l'utente prenda direttamente la pagina di accesso. –

+0

Ancora mi sta dando l'url della pagina logix.xhtml –

0

Utilizzare il reindirizzamento per inoltrare il controllo nella pagina successiva.

String returnToUrl = returnToUrl("/nextPage.xhtml"); 
FacesContext.getCurrentInstance().getExternalContext().dispatch(returnToUrl); 

Date un'occhiata a questo:

http://blog.enterpriselab.ch/tdmarti/2011/04/06/openid-in-a-web-application-based-on-java-ee-and-jsf-2-0/

Aggiornamento:

Per identificare ciò da cui richiesta di pagina è stato fatto fare riferimento a questi posti:

How to get the previous page URL from request in servlet after dispatcher.forward(request, response)

How to get the original request url from a servlet/jsp after multiple servlet forwards

http://www.coderanch.com/t/361942/Servlets/java/Track-Jsp-request-coming-Servlet

+0

questo è il problema Come otterrò da quale pagina viene l'utente perché quando mai l'utente fa clic su un collegamento gli sto mostrando un login.xhtml –

+0

Per questo è possibile passare un parametro con la richiesta di identificare quello da cui è stata fatta la richiesta di pagina e in base a ciò è possibile reindirizzare alla stessa pagina o a una diversa. Si prega di controllare la risposta aggiornata. –

+0

Possibile che tu mi dia un codice demo per questo..come ho fatto lo stesso, ma mi dice che sono in login.xhtml pagina –

Problemi correlati