| MasonX-Request-WithApacheSession2 documentation | view source | Contained in the MasonX-Request-WithApacheSession2 distribution. |
MasonX::Request::WithApacheSession2 - Add a session to the Mason Request object
In your httpd.conf file:
PerlSetVar MasonRequestClass MasonX::Request::WithApacheSession2 PerlSetVar MasonSessionCookieDomain .example.com PerlSetVar MasonSessionClass Apache::Session::MySQL PerlSetVar MasonSessionDataSource dbi:mysql:somedb
Or when creating an ApacheHandler2 object:
my $ah =
HTML::Mason::ApacheHandler2->new
( request_class => 'MasonX::Request::WithApacheSession2',
session_cookie_domain => '.example.com',
session_class => 'Apache::Session2::MySQL',
session_data_source => 'dbi:mysql:somedb',
);
In a component:
$m->session->{foo} = 1;
if ( $m->session->{bar}{baz} > 1 ) { ... }
MasonX::Request::WithApacheSession2 is highly experimental ( alpha ) and should only be used in a test environment.
MasonX::Request::WithApacheSession2 is a clone of MasonX::Request::WithApacheSession changed to work under a pure mod_perl2 environment. The external interface is unchanged, see MasonX::Request::WithApacheSession.
The actual changes I made can be found in the distribution in diff/WithApacheSession.diff ( made with 'diff -Naru' ... ).
A HOWTO for HTML::Mason::ApacheHandler2 and friends may be found at Mason-with-mod_perl2.
The following documentation is from MasonX::Request::WithApacheSession,
This module integrates Apache::Session into Mason by adding methods
to the Mason Request object available in all Mason components.
Any subrequests created by a request share the same session.
To use this module you need to tell Mason to use this class for requests. This can be done in one of two ways. If you are configuring Mason via your httpd.conf file, simply add this:
PerlSetVar MasonRequestClass MasonX::Request::WithApacheSession2
If you are using a handler.pl file, simply add this parameter to the parameters given to the ApacheHandler constructor:
request_class => 'MasonX::Request::WithApacheSession2'
This class adds two methods to the Request object.
This method returns a hash tied to the Apache::Session class.
This method deletes the existing session from persistent storage. If you are using the built-in cookie mechanism, it also deletes the cookie in the browser.
This module accepts quite a number of parameters, most of which are
simply passed through to Apache::Session. For this reason, you are
advised to familiarize yourself with the Apache::Session
documentation before attempting to configure this module.
The name of the Apache::Session subclass you would like to use.
This module will load this class for you if necessary.
This parameter is required.
If this is true, then this module will ensure that Apache::Session
writes the session. If it is false, the default Apache::Session
behavior is used instead.
This defaults to true.
If this is true, an attempt to create a session with a session id that
does not exist in the session storage will be ignored, and a new
session will be created instead. If it is false, a
HTML::Mason::Exception::NonExistentSessionID exception will be
thrown instead.
This defaults to true.
If true, then this module will use Apache::Cookie to set and read
cookies that contain the session id.
The cookie will be set again every time the client accesses a Mason
component unless the session_cookie_resend parameter is false.
This is the name of the cookie that this module will set. This
defaults to "MasonX-Request-WithApacheSession-cookie".
Corresponds to the Apache::Cookie "-name" constructor parameter.
How long before the cookie expires. This defaults to 1 day, "+1d". Corresponds to the "-expires" parameter.
This corresponds to the "-domain" parameter. If not given this will not be set as part of the cookie.
Corresponds to the "-path" parameter. It defaults to "/".
Corresponds to the "-secure" parameter. It defaults to false.
By default, this parameter is true, and the cookie will be sent for every request. If it is false, then the cookie will only be sent when the session is created. This is important as resending the cookie has the effect of updating the expiration time.
If set, then this module will first look for the session id in the query string or POST parameter with the specified name.
If you are also using cookies, then the module checks in the request arguments first, and then it checks for a cookie.
The session id is available from $m->session->{_session_id}.
When run under the ApacheHandler module, this module attempts to first
use Apache::Cookie for cookie-handling. Otherwise it uses
CGI::Cookie as a fallback.
If it ends up using CGI::Cookie then it can only set cookies if it
is running under either the ApacheHandler or the CGIHandler module.
Otherwise, the MasonX::Request::WithApacheSession request object
has no way to get to an object which can take the headers. In other
words, if there's no $r, there's nothing with which to set headers.
As can be seen by the number of parameters above, Apache::Session
has way too many possibilities for me to test all of them. This
means there are almost certainly bugs.
Bug reports and requests for help should be sent to the mason-users list. See http://www.masonhq.com/resources/mailing_lists.html for more details.
Beau E. Cox <mason@beaucox.com> http://beaucox.com.
The real authors (I just made mod_perl2 changes) is Dave Rolsky, <autarch@urth.org>
Version 0.01 as of January, 2004.
My documents, including: HOWTO Run Mason with mod_perl2 (Mason-with-mod_perl2), HTML::Mason::ApacheHandler2 (ApacheHandler2), MasonX::Request::WithMultiSession2 (WithMultiSession2),
Original Mason documents, including: HTML::Mason::ApacheHandler (ApacheHandler), MasonX::Request::WithApacheSession (WithApacheSession), MasonX::Request::WithMultiSession (WithMultiSession).
Also see the Mason documentation at http://masonhq.com/docs/manual/.
| MasonX-Request-WithApacheSession2 documentation | view source | Contained in the MasonX-Request-WithApacheSession2 distribution. |