[Catalyst] Saving redirect URL in flash not sticking through login process

Eric Berg eberg at bergbrains.com
Mon Jan 24 04:58:02 GMT 2011


Thanks, Will.  That I figured that would work, but I thought that the =

flash was the right way to do it -- especially with the automatic =

cleanup, so I was holding off on trying that.

Why doesn't flash work across these multiple requests?  I thought that =

was the whole idea of flash vs. stash.

Eric

On 1/23/11 11:52 PM, will trillich wrote:
> The flash is moved to the stash after the redirect, and then it's gone =

> after that, right?
>
> What we do is stuff the intended destination into the session and then =

> pull it from there:
>
> sub login : Chained('/') PathPart('login') Args(0) {
>     my ( $self, $c ) =3D @_;
>
>     my $form =3D Spill::Form::Login->new( action =3D> $c->uri_for('/login=
') );
>
>     $c->stash(
>         template =3D> 'login.tt2',
>         form     =3D> $form,
>     );
>
>     if ( $c->action ne 'login' ) {
>         # Stuff destination into session for later redirect if user =

> authenticates
> *        $c->session->{redirect} =3D $c->req->uri->as_string;*
>     }
>
> ...then, later, after authenticating...
>
>             my $go =3D *delete( $c->session->{redirect} )* || =

> $c->req->headers->referer;
>             $go =3D '/' if $go =3D~ /\blog(in|out)\b/;
>             $c->res->redirect( $go );
>             $c->detach;
>
>
> On Sun, Jan 23, 2011 at 8:27 PM, Eric Berg <eberg at bergbrains.com =

> <mailto:eberg at bergbrains.com>> wrote:
>
>     If a user submits a certain form without being logged in, I flash
>     the current URL, save the params in the session, and redirect them
>     to the login.
>
>     In my Login controller, I look for $c->flash->{redirect_url} and
>     redirect them back to that URL.
>
>     The problem is that that flash entry is gone after the user
>     submits the login form.  I logged out the redirect URL at the
>     beginning of my login routine and it comes through the first time,
>     but even if I don't access it via the log statement, that
>     redirect_url key is not there in the flash when the user submits
>     the login form with their credentials.
>
>     I've tried resetting $c->flash->{redirect_url} in the login
>     routine and also tried $c->keep_flash( qw( redirect_url )) in the
>     login routine, but no go.
>
>     Any thoughts on what I might be doing wrong?
>
>     Eric
>
>     _______________________________________________
>     List: Catalyst at lists.scsys.co.uk <mailto:Catalyst at lists.scsys.co.uk>
>     Listinfo: http://lists.scsys.co.uk/cgi-bin/mailman/listinfo/catalyst
>     Searchable archive:
>     http://www.mail-archive.com/catalyst@lists.scsys.co.uk/
>     Dev site: http://dev.catalyst.perl.org/
>
>
>
>
> -- =

> The first step towards getting somewhere is to decide that you are not =

> going to stay where you are.  -- J.P.Morgan
>
>
> _______________________________________________
> List: Catalyst at lists.scsys.co.uk
> Listinfo: http://lists.scsys.co.uk/cgi-bin/mailman/listinfo/catalyst
> Searchable archive: http://www.mail-archive.com/catalyst@lists.scsys.co.u=
k/
> Dev site: http://dev.catalyst.perl.org/

-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.scsys.co.uk/pipermail/catalyst/attachments/20110123/6b6e3=
414/attachment.htm


More information about the Catalyst mailing list