You are viewing a plain text version of this content. The canonical link for it is here.
Posted to modperl@perl.apache.org by Dave Rolsky <au...@urth.org> on 2004/02/26 19:31:48 UTC
ANNOUNCE: Apache::Session::Wrapper 0.11
So here's the second release of the module that was discussed on this list
earlier. It provides a simple wrapper around Apache::Session that handles
getting a session id from a cookie or URL parameter.
It also has a generic hook for subclassing, where it will simply call
"_get_session_id" before trying to get an id from a cookie or URL.
Unfortunately, I just realized that I forgot to document this (oops).
Ignore version 0.1, which is missing a bit of docs, and has the wrong
default cookie name.
Docs after my sig for this first release.
-dave
/*=======================
House Absolute Consulting
www.houseabsolute.com
=======================*/
NAME
Apache::Session::Wrapper - A simple wrapper around Apache::Session
SYNOPSIS
my $wrapper =
Apache::Session::Wrapper->new( class => 'MySQL',
handle => $dbh,
cookie_name => 'example-dot-com-cookie',
);
# will get an existing session from a cookie, or create a new session
# and cookie if needed
$wrapper->session->{foo} = 1;
DESCRIPTION
This module is a simple wrapper around Apache::Session which provides
some methods to simplify getting and setting the session id.
It can uses cookies to store the session id, or it can look in a
provided object for a specific parameter. Alternately, you can simply
provide the session id yourself in the call to the "session()" method.
If you're using Mason, you should probably take a look at
"MasonX::Request::WithApacheSession" first, which integrates this module
directly into Mason.
METHODS
This class provides the following public methods:
* new
This method creates a new "Apache::Session::Wrapper" object.
* session
This method returns a hash tied to the "Apache::Session" class.
* delete_session
This method deletes the existing session from persistent storage. If
you are using the built-in cookie handling, it also deletes the
cookie in the browser.
CONFIGURATION
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.
Generic Parameters
* class => class name
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.
* always_write => boolean
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.
* allow_invalid_id => boolean
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.
Cookie-Related Parameters
* use_cookie => boolean
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 "cookie_resend" parameter is false.
* cookie_name => name
This is the name of the cookie that this module will set. This
defaults to "Apache-Session-Wrapper-cookie". Corresponds to the
"Apache::Cookie" "-name" constructor parameter.
* cookie_expires => expiration
How long before the cookie expires. This defaults to 1 day, "+1d".
Corresponds to the "-expires" parameter.
* cookie_domain => domain
This corresponds to the "-domain" parameter. If not given this will
not be set as part of the cookie.
If it is undefined, then no "-domain" parameter will be given.
* cookie_path => path
Corresponds to the "-path" parameter. It defaults to "/".
* cookie_secure => boolean
Corresponds to the "-secure" parameter. It defaults to false.
* cookie_resend => boolean
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.
* header_object => object
When running outside of mod_perl, you must provide an object to
which the cookie header can be added. This object must provide
either an "err_header_out()" or "header_out()" method.
Under mod_perl, this will default to the object returned by
"Apache->request".
Query/POST-Related Parameters
* param_name => name
If set, then this module will first look for the session id in the
object specified via "param_object". This parameter determines the
name of the parameter that is checked.
If you are also using cookies, then the module checks the param
object *first*, and then it checks for a cookie.
The session id is available from "$m->session->{_session_id}".
* param_object => object
This should be an object that provides a "param()" method. This
object will be checked to see if it contains the parameter named in
"params_name". This object will probably be a "CGI.pm" or
"Apache::Request" object, but it doesn't have to be.
Apache::Session-related Parameters
These parameters are simply passed through to "Apache::Session".
* data_source => DSN
Corresponds to the "DataSource" parameter passed to the DBI-related
session modules.
* user_name => user name
Corresponds to the "UserName" parameter passed to the DBI-related
session modules.
* password => password
Corresponds to the "Password" parameter passed to the DBI-related
session modules.
* handle => DBI handle
Corresponds to the "Handle" parameter passed to the DBI-related
session modules. This cannot be set via the httpd.conf file, because
it needs to be an *actual Perl variable*, not the *name* of that
variable.
* table_name => table name
Corresponds to the "TableName" paramaeter passed to DBI-related
modules.
* lock_data_source => DSN
Corresponds to the "LockDataSource" parameter passed to
"Apache::Session::MySQL".
* lock_user_name => user name
Corresponds to the "LockUserName" parameter passed to
"Apache::Session::MySQL".
* lock_password => password
Corresponds to the "LockPassword" parameter passed to
"Apache::Session::MySQL".
* lock_handle => DBI handle
Corresponds to the "LockHandle" parameter passed to the DBI-related
session modules. As with the "handle" parameter, this cannot be set
via the httpd.conf file.
* commit => boolean
Corresponds to the "Commit" parameter passed to the DBI-related
session modules.
* transaction => boolean
Corresponds to the "Transaction" parameter.
* directory => directory
Corresponds to the "Directory" parameter passed to
"Apache::Session::File".
* lock_directory => directory
Corresponds to the "LockDirectory" parameter passed to
"Apache::Session::File".
* file_name => file name
Corresponds to the "FileName" parameter passed to
"Apache::Session::DB_File".
* store => class
Corresponds to the "Store" parameter passed to
"Apache::Session::Flex".
* lock => class
Corresponds to the "Lock" parameter passed to
"Apache::Session::Flex".
* generate => class
Corresponds to the "Generate" parameter passed to
"Apache::Session::Flex".
* serialize => class
Corresponds to the "Serialize" parameter passed to
"Apache::Session::Flex".
* textsize => size
Corresponds to the "textsize" parameter passed to
"Apache::Session::Sybase".
* long_read_len => size
Corresponds to the "LongReadLen" parameter passed to
"Apache::Session::MySQL".
* n_sems => number
Corresponds to the "NSems" parameter passed to
"Apache::Session::Lock::Semaphore".
* semaphore_key => key
Corresponds to the "SemaphoreKey" parameter passed to
"Apache::Session::Lock::Semaphore".
* mod_usertrack_cookie_name => name
Corresponds to the "ModUsertrackCookieName" parameter passed to
"Apache::Session::Generate::ModUsertrack".
* save_path => path
Corresponds to the "SavePath" parameter passed to
"Apache::Session::PHP".
HOW COOKIES ARE HANDLED
When run under mod_perl, 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 must provide a "header_object"
parameter. The module calls "err_header_out()" or "header_out()" on the
provided object, using the former if it's available.
SUBCLASSING
This class provides a simply hook for subclasses. Before trying to get a
session id from the URL or cookie, it calls a method named
"_get_session_id()". In this class, that method is a no-op, but you can
override this in a subclass.
This class is a "Class::Container" subclass, so if you accept additional
constructor parameters, you should declare them via the "valid_params()"
method.
SUPPORT
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.
Please submit bugs to the CPAN RT system at
http://rt.cpan.org/NoAuth/ReportBug.html?Queue=Apache%3A%3ASession%3A%3A
Wrapper or via email at bug-apache-session-wrapper@rt.cpan.org.
Support questions can be sent to me at my email address, listed below.
AUTHOR
Dave Rolsky, <au...@urth.org>
--
Report problems: http://perl.apache.org/bugs/
Mail list info: http://perl.apache.org/maillist/modperl.html
List etiquette: http://perl.apache.org/maillist/email-etiquette.html
Re: ANNOUNCE: Apache::Session::Wrapper 0.11
Posted by Dave Rolsky <au...@urth.org>.
On Thu, 26 Feb 2004, Dave Rolsky wrote:
> So here's the second release of the module that was discussed on this list
Swiftly followed by the third release, which includes some doc
improvements.
-dave
/*=======================
House Absolute Consulting
www.houseabsolute.com
=======================*/
--
Report problems: http://perl.apache.org/bugs/
Mail list info: http://perl.apache.org/maillist/modperl.html
List etiquette: http://perl.apache.org/maillist/email-etiquette.html