Hello,
I have been looking for a solution that will allow me to check if a user
has been logged in before I load a page. If the user is not logged in, or
the session has timed out, I want to send the user to the login page. In
my searching if found the jsf-comp onload project. From the outside this
looks exactly like what I want; however, I have been having problems
implementing it.
I'm running JSF 1.2, Tomcat 6, and Apache Trinidad 1.2.8. I have created a
onload-config.xml and installed the jsfNet 0.9.0 jar. I'm using the
Trinidad XMLMenu for my menuing, and in the top menu the destination
attribute is used instead of the action attribute.
I get the following logs from OnLoad when I start my webapp:
18:53:20 INFO GC On Load configuration is being loaded from
/WEB-INF/onload-config.xml
18:53:20 INFO GC 2 rule(s) have been found
18:53:20 DEBUG GC Rule: view-id: /index.jspx, action:
#{scoreController.getScore1}, success-result: null
18:53:20 DEBUG GC Rule: view-id: /faces/page*, action:
#{scoreController.score99}, success-result: 9
Now when I go to index.jspx, I want to check if the user is logged in. For
my test I am using the scoreController object returns "1" as a string from
getScore1. I tried setting success-result to null, "1", and "9", but not
matter what I set it too the navigation always goes to index.jspx. As a
test I tried extending OnLoadPhaseListener's beforeHandleNavigation
function and returning false, but that didn't work either.
Here are the logs I get when I I click "index.jspx" menu. (In this test
run I have success-result set to null).
18:53:20 DEBUG GC Processing on load of view /index.jspx
18:53:20 DEBUG GC Looking for rule for view /index.jspx
18:53:20 DEBUG GC Checking for exact match. Rule view: /index.jspx
18:53:20 INFO GC Found rule with exact match
18:53:20 DEBUG GC Invoking action: #{scoreController.getScore1}
18:53:20 INFO JSF Using LifecycleProvider
org.apache.myfaces.config.annotation.TomcatAnnotationLifecycleProvider
18:53:20 INFO JSF Creating instance of
com.stoddardsoftware.golfclap.web.score.ScoreController
18:53:20 INFO GC NATE TEST: processing beforeHandleNavigation now...
18:53:20 DEBUG GC Calling navigation handler with result: 1
18:53:23 INFO JSF Creating instance of
org.apache.myfaces.trinidad.model.XMLMenuModel
At this point I'm out of ideas. Can someone show me an example of how to
check if my user is logged in and then redirect to the login page if they
are not? Can this be done completely from onload-config.xml or will I need
to extend OnLoadPhaseListener to redirect?
Thank you for taking the time to help.
-Nate