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 ) = @_;

    my $form = Spill::Form::Login->new( action => $c->uri_for('/login') );

    $c->stash(
        template => 'login.tt2',
        form     => $form,
    );

    if ( $c->action ne 'login' ) {
# Stuff destination into session for later redirect if user authenticates
*        $c->session->{redirect} = $c->req->uri->as_string;*
    }

...then, later, after authenticating...

my $go = *delete( $c->session->{redirect} )* || $c->req->headers->referer;
            $go = '/' if $go =~ /\blog(in|out)\b/;
            $c->res->redirect( $go );
            $c->detach;


On Sun, Jan 23, 2011 at 8:27 PM, Eric Berg <[email protected] <mailto:[email protected]>> 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: [email protected] <mailto:[email protected]>
    Listinfo: http://lists.scsys.co.uk/cgi-bin/mailman/listinfo/catalyst
    Searchable archive:
    http://www.mail-archive.com/[email protected]/
    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: [email protected]
Listinfo: http://lists.scsys.co.uk/cgi-bin/mailman/listinfo/catalyst
Searchable archive: http://www.mail-archive.com/[email protected]/
Dev site: http://dev.catalyst.perl.org/

_______________________________________________
List: [email protected]
Listinfo: http://lists.scsys.co.uk/cgi-bin/mailman/listinfo/catalyst
Searchable archive: http://www.mail-archive.com/[email protected]/
Dev site: http://dev.catalyst.perl.org/

Reply via email to