[Catalyst] Saving redirect URL in flash not sticking through
login process
will trillich
will.trillich at serensoft.com
Mon Jan 24 05:36:50 GMT 2011
I think stash is the ephemeral one-shot hashref, whereas flash is the
next-request's preloaded stash. That is, you can load up your flash with
whatever you need, and then do a full $c->res->redirect() somewhere -- which
fires off a browser redirect and a new request -- and your then-stash will
have all the goodies you plopped in there.
And, being the stash, it's all wiped out when the request is done. So a
follow-up request (or redirect) would either have an empty stash, or it'd
require the second request-handling routines to stuff things into flash
(again).
So it's not that "flash" is permanent, it's not. It's just a pre-load for
the next-request's short-lived stash.
On Sun, Jan 23, 2011 at 10:58 PM, Eric Berg <eberg at bergbrains.com> wrote:
> 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('/logi=
n')
> );
>
> $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> 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 lo=
gin.
>>
>> 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 w=
hen
>> 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
>> 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/
>
>
>
> _______________________________________________
> 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.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
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.scsys.co.uk/pipermail/catalyst/attachments/20110123/9c4af=
42c/attachment.htm
More information about the Catalyst
mailing list