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/