Bingo! You are right, @Persist was missing from my login page nextPageLink
member. I'm not much a fan of putting data in session and probably ignored or
junked that essential @Persist!
thanks,
John
----- Original Message -----
From: Geoff Callender
To: Tapestry users
Sent: Monday, April 29, 2013 10:35 PM
Subject: Re: problem with jumpstart protecting pages code
Hi John,
It works because LoginPage persists the link in your session:
@Persist
private Link nextPageLink;
Have you really seen it fail? Try for yourself - try user 2 (login with
admin, admin):
http://jumpstart.doublenegative.com.au/jumpstart/theapp/security/userview/2
then log out, then try user 3:
http://jumpstart.doublenegative.com.au/jumpstart/theapp/security/userview/3
then log out, then try role 1:
http://jumpstart.doublenegative.com.au/jumpstart/theapp/security/roleview/1
Does it ever not work? If it needs fixing then I'd really like to know.
Geoff
On 29/04/2013, at 6:47 PM, John wrote:
> I don't think the following code works, it doesn't when I run my version of
it.
>
> The loginPage has it's nextPageLink property set, but then the
loginPageLink is returned by using the Login.class which presumably just
redirects to a fresh login page without the nextPageLink set.
>
> So the nextPageLink is null in the Login page so the nextPageLink cannot be
used.
>
> John
>
>
http://jumpstart.doublenegative.com.au/jumpstart/examples/infrastructure/protectingpages
>
>
> // Get the Login page, give it a link to the requested page, and
redirect to Login
>
> IIntermediatePage loginPage = (IIntermediatePage)
componentSource.getPage(Login.class);
>
> Link requestedPageLink =
makeLinkToRequestedPage(requestedPageName, eventContext);
> loginPage.setNextPageLink(requestedPageLink);
>
> Link loginPageLink =
pageRenderLinkSource.createPageRenderLink(Login.class);
> response.sendRedirect(loginPageLink);
>
> return false;