jsf - Navigate to requested page after login -


i know issues has been discussed many times, however, did not manage straight. appreciate if take @ this.

so, have following issue:

if user wants acces application through link e.g.

http://example:8080/kundenportal/protected/post/post.jsf  

he redirected loginpage(i have phaselistener validate if logged in or not).

now, after login, user wants

http://example:8080/kundenportal/protected/post/post.jsf,  

instead redirected

http://example:8080/kundenportal/protected/post/start.jsf. 

how can tell application user should redirected after login? know works through httprequestservlet, after checking if loggedin or not in phaselistener user redirected loginpage, means requesturl loginpage, wrong.

here code.

this phaselistener:

@override public void afterphase(phaseevent event) {     facescontext fc = event.getfacescontext();     string currentpage = fc.getviewroot().getviewid();      httpservletrequest origrequest = (httpservletrequest) fc             .getexternalcontext().getrequest();     //  here requesturi post.xhtml      string requri = origrequest.getrequesturi();      // boolean loginpage = page.startswith("/login.xhtml");     // boolean registerpage = page.startswith("/registrierung.xhtml");      boolean loginrequired = currentpage.startswith("/protected/");     if (loginrequired && !loggedin(fc)) {         navigationhandler nh = fc.getapplication().getnavigationhandler();         nh.handlenavigation(fc, null, "loginfailed");         fc.renderresponse();      }  } 

ok, how set faces-confing.xhtml:

at.ooev.kp.controller.login.loggedincheck

<application>     <locale-config>         <default-locale>de</default-locale>         <supported-locale>de</supported-locale>     </locale-config>     <message-bundle>at.ooev.kp.messages</message-bundle>     <resource-bundle>         <base-name>at.ooev.kp.messages</base-name>         <var>messages</var>     </resource-bundle> </application>   <navigation-rule>     <from-view-id>*</from-view-id>     <navigation-case>         <from-outcome>loginfailed</from-outcome>         <to-view-id>/login.xhtml</to-view-id>     </navigation-case>     <navigation-case>         <from-outcome>dologin</from-outcome>         <to-view-id>/login.xhtml</to-view-id>     </navigation-case>     <navigation-case>         <from-outcome>expired</from-outcome>         <to-view-id>/expired.xhtml</to-view-id>     </navigation-case>   </navigation-rule>  <navigation-rule>     <from-view-id>*</from-view-id>     <navigation-case>         <from-outcome>page_0_</from-outcome>         <to-view-id>/protected/start.xhtml</to-view-id>     </navigation-case>     <navigation-case>         <from-outcome>page_1_1</from-outcome>         <to-view-id>/protected/pol/polizzen.xhtml</to-view-id>     </navigation-case>     <navigation-case>         <from-outcome>page_1_2</from-outcome>         <to-view-id>/protected/sch/schaden.xhtml</to-view-id>     </navigation-case>     <navigation-case>         <from-outcome>page_1_3</from-outcome>         <to-view-id>/protected/tk/topkundeninfo.xhtml</to-view-id>     </navigation-case>     <navigation-case>         <from-outcome>page_2_</from-outcome>         <to-view-id>/protected/daten/daten.xhtml</to-view-id>     </navigation-case>     <navigation-case>         <from-outcome>page_2_1</from-outcome>         <to-view-id>/protected/daten/kundendaten.xhtml</to-view-id>     </navigation-case>     <navigation-case>         <from-outcome>page_2_2</from-outcome>         <to-view-id>/protected/daten/benutzer.xhtml</to-view-id>     </navigation-case>     <navigation-case>         <from-outcome>page_3_1</from-outcome>         <to-view-id>/protected/post/post.xhtml</to-view-id>     </navigation-case>     <navigation-case>         <from-outcome>page_4_1</from-outcome>         <to-view-id>/protected/komm/vereinbarung.xhtml</to-view-id>     </navigation-case>     <navigation-case>         <from-outcome>page_5_1</from-outcome>         <to-view-id>/protected/trans/transport.xhtml</to-view-id>     </navigation-case> </navigation-rule>  <navigation-rule>     <from-view-id>/login.xhtml</from-view-id>     <navigation-case>         <from-outcome>loginok</from-outcome>         <to-view-id>/protected/start.xhtml</to-view-id>     </navigation-case>     <navigation-case>         <from-outcome>register</from-outcome>         <to-view-id>/registrierung.xhtml</to-view-id>     </navigation-case>     <navigation-case>         <from-outcome>loginpost</from-outcome>         <to-view-id>/protected/post/post.xhtml</to-view-id>     </navigation-case> </navigation-rule> 

and managedbean whith login:

@permitall public string login() {     facescontext fc = facescontext .getcurrentinstance();     httpservletrequest origrequest = (httpservletrequest) fc.getexternalcontext().getrequest();     // requesturi here login.xhtml(because there redirection in phaselistener)     string str = origrequest.getrequesturi();      if (dologin(credentials.getusername(), credentials.getpassword())) {         string realname = (!utils.isempty(webbauser.getvorname())) ? webbauser                 .getvorname() + " "                 : "";         realname += webbauser.getname();         user.setusername(credentials.getusername());         user.setrealname(realname);         user.setkndnr(credentials.getusername());         if ("kunde".equalsignorecase(credentials.getusername()))             user.setkndnr("600828");         user.setmailadresse(webbauser.getemail());         user.sethostuserid(webbauser.gethostuserid());          httpsession session = ((httpservletrequest) facescontext                 .getcurrentinstance().getexternalcontext().getrequest())                 .getsession(false);         session.setattribute("loggedinuser", user.getusername());         dblog.add(dblogcontroller.aktion.login, user.getusername());         // list<string> kundennummern = webbauser.getdatfilt();         // (string s : kundennummern)         // system.out.println("datfilt: " + s);         return "loginok";     } else {         facescontext.getcurrentinstance().addmessage(null,                 new facesmessage("anmeldung fehlgeschlagen!"));         dblog.add(dblogcontroller.aktion.loginfailed,                 credentials.getusername());         user = null;         return null;     } } 

keep url in session attribute login_redirect in phase listener , use after login.

some frameworks spring security you.


Comments

Popular posts from this blog

linux - Does gcc have any options to add version info in ELF binary file? -

android - send complex objects as post php java -

charts - What graph/dashboard product is facebook using in Dashboard: PUE & WUE -