Yep, I, too, avoid session persistence like the plague. But in this case I
figure that it's fair enough because we're about to use the session anyway
when they log in (it creates a "Visit" and stores it with @SessionState).
We remove the link from Login afterwards with
discardPersistentFieldChanges() .


On 30 April 2013 08:43, John <j...@quivinco.com> wrote:

> 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;
>
>

Reply via email to