---
name: "MasonX::Request::WithMultiSession"
section: "3pm"
platform: "linux"
package: "libmasonx-request-withapachesession-perl"
version: "0.31-3"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/MasonX::Request::WithMultiSession"
---

# MasonX::Request::WithMultiSession(3pm)

Multiple sub-sessions within one "parent" session

## NAME

MasonX::Request::WithMultiSession - Multiple sub-sessions within one "parent" session

## SYNOPSIS

```
  PerlSetVar  MasonRequestClass  MasonX::Request::WithMultiSession
```

## DESCRIPTION

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

Like `"MasonX::Request::WithApacheSession"`, sub-sessions are shared between a request and any subrequests it creates.

## METHODS

This class has an interface quite similar to that of `"MasonX::Request::WithApacheSession"`.

- •

  session

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

- •

  sub\_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 sub-session id.

- •

  delete\_sub\_session

  By default, this simply defaults the current sub-session.  You can pass a "sub\_session\_id" parameter to delete a specific session.

### Parameters

This module takes two parameters besides those inherited from `"MasonX::Request::WithApacheSession"`:

- •

  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 "sub\_session\_id".

- •

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

  Sub-sessions expiration is checked when the request object goes out of scope.

## USAGE

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.

## SUPPORT

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.

## AUTHOR

Dave Rolsky, \<autarch@urth.org\>

Development funded by Marigold Technologies.

## SEE ALSO

HTML::Mason
