MasonX::Request::WithMultiSession - Multiple sub-sessions within one
PerlSetVar MasonRequestClass MasonX::Request::WithMultiSession
This module subclasses "MasonX::Request::WithApacheSession" in order
to allow multiple "sub-sessions" to exist within one parent session.
This can be quite useful for a web app where you want to allow the user to open
multiple windows, each with a different session, but session ids are stored in
Like "MasonX::Request::WithApacheSession", sub-sessions are shared
between a request and any subrequests it creates.
This class has an interface quite similar to that of
The primary interface to this class is through the "session()"
method. When this method is called without any parameters, the module
looks for an existing sub-session specified by the sub-session id argument
parameter (which can be in a query string or POST). This value can be
overridden by explicitly passing a "sub_session_id" parameter.
If this parameter is found, an existing sub-session is returned. If this
parameter is not found, a new sub-session is created.
If the "session()" method is called as "session( clone =>
1 )" then a new sub-session will be created, and its contents will be
the same as that of the current sub-session. This is a shallow copy of the
old session hash, so objects and references are shared between them.
If "session( new => 1 )" is called, then a new, empty,
sub-session is created.
You can specify the main session id to use via the "session_id"
This method returns the currently active sub-session's id. Use this method
to put this id into URL parameters, forms, etc. as needed.
If given a "sub_session_id" parameter, it will set the current
By default, this simply defaults the current sub-session. You can pass a
"sub_session_id" parameter to delete a specific session.
This module takes two parameters besides those inherited from
- multi_session_args_param / MultiSessionArgsParam
This parameter can be used to specify which parameter contains the
sub-session id. By default, the module will look for a parameter called
- multi_session_expire / MultiSessionExpire
This parameter specifies the number of seconds after a sub-session is
accessed until it is purged. If not specified, then sub-sessions are never
Sub-sessions expiration is checked when the request object goes out of
You will need to manually set the sub-session id argument parameter for each
request. The easiest way to do this is to make sure that all URLs contain the
sub-session id. This can be done by using a "<%filter>" block
in a top-level autohandler (although this won't catch redirects), or by making
sure all URLs are generated by a single component/function.
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.
Dave Rolsky, <firstname.lastname@example.org>
Development funded by Marigold Technologies.