Hi Steve,
What you are asking is relatively simple really - we implemented an interceptor
to capture the current request URL and store it in the current value stack. We
can subsequently reference it in our JSPs and use it in forms in several places
to enable us to redirect to the original page after certain events occur. Here
is the intercept method:
public String intercept(ActionInvocation invocation) throws Exception {
HttpServletRequest request = ServletActionContext.getRequest();
StringBuffer returnUrl = new StringBuffer(request.getRequestURL());
invocation.getStack().set("returnURL", returnUrl); return
invocation.invoke(); }
In your example, you would add setUrl and getUrl methods to the login action
class and then use the ${returnURL} in your JSP to create the request parameter
/ hidden input.
Also, don't forget about the ability to use OGNL within your results... so your
result could be of type "redirect" sending to a location of ${url} (that being
the parameter name in your example below, and resolving to LoginAction.getUrl().
Regards
Stuart
p.s. the reason for using the interceptor, rather than just accessing the
request URL directly in the JSP is that by the time the JSP is rendered, that
URL points to the JSP itself, rather than the action.
On 19/05/2009 16:44, "Steve" <[email protected]> wrote:
I would rather avoid using Acegi as I'm not using Spring. I'm using Struts 2
and EJB3.
I appreciate the Acegi can be used without Spring. But it still seems like
overkill to solve this one issue.
I was hoping to generate a call to login.action like
".../login.action?url=<complete request string>". I guess storing the
request string in the session would work just as well. Do you know the
easiest way to access the request string from an interceptor or action?
Many Thanks,
Steve
-----Original Message-----
From: Lukasz Lenart [mailto:[email protected]]
Sent: 19 May 2009 15:26
To: Struts Users Mailing List
Subject: Re: Accessing protected resources via a login page
2009/5/19 Steve <[email protected]>:
> Can anyone advise on the best way to do this?
Use Acegi, it has such functionality built-in or store request path in
session when redirecting to login page and after successful login,
read it from session and redirect to it. It should be achievable with
the same interceptor you created.
Regards
--
Lukasz
http://www.lenart.org.pl/
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]