[Catalyst] Make Catalyst NOT reset a cookie on a per action basis

Tomas Doran bobtfish at bobtfish.net
Tue Aug 18 00:50:17 GMT 2009


On 18 Aug 2009, at 01:19, Steve Kleiman wrote:

> 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.

Right.. But you then clear the cookie at the end of the hit, problem  
solved?
>
> 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....


Sure - Class::MOP::Class->initialize('Catalyst::Plugin::Session')- 
 >add_before_modifier iirc. Also - when you say 'wrap' - a before  
modifier won't wrap a method - the method _always_ runs.

Also, monkeypatching like this is a bad idea, as it has global effect  
(your entire perl interpreter).

Why doesn't the initial solution solve your problem, by clearing the  
troublesome cookie (so the browser never sees it) at the end of the hit.

Cheers
t0m




More information about the Catalyst mailing list