Thanks for taking a look. I thought I had it isolated but seems not. Tried what you suggested below but the instigator of the cookie happens at a different juncture.

The instigator for a 'Catalyst::Plugin::Session' cookie being set is 'Session::prepare_action'. The method calls 'sessionid' which ultimately invokes the resetting of the cookie.

sub prepare_action {
    my $c = shift;

    if (    $c->config->{session}{flash_to_stash}
        and $c->sessionid
        and my $flash_data = $c->flash )
    {
        @{ $c->stash }{ keys %$flash_data } = values %$flash_data;
    }

    $c->maybe::next::method(@_);
}

So a more refined question would be, is there a way to wrap only 'Session::prepare_action' whilst not wrapping all the other 'prepare_action' methods? I've tried the following but have had no luck:
before 'prepare_action' => sub { ... }
before 'Session::prepare_action' => sub { ... }
before 'Catalyst::Plugin::Session::prepare_action' => sub { ... }

Thanks for the help....

-steve



On Aug 17, 2009, at 2:33 PM, Tomas Doran wrote:


On 16 Aug 2009, at 19:59, Steve Kleiman wrote:
WHAT I CAN SEE:
Catalyst engine calls "finalize_cookies" which resets every cookie it finds. This takes place before the 'begin' method and the 'Set- Cookie' header has already been dispatched. Therefore removing that header in 'begin' does nothing. If the original request did not present a cookie, then Catalyst does not regurgitate the cookie and everything works great.

Thanks for any guidance. It'd be great of there's a solution that doesn't require constraining the cookie path.

How about:

after 'finalize_cookies' => sub {
   my $c = shift;
   $c->res->cookies({}) if $c->stash->{no_cookies};
};

in your MyApp.pm, then just arrange for things to set $c->stash- >{no_cookies}?

Cheers
t0m


_______________________________________________
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