Apache-Session-Wrapper
view release on metacpan or search on metacpan
lib/Apache/Session/Wrapper.pm view on Meta::CPAN
can => 'param',
descr => 'Object which has a "param" method, to be used for getting the session id from a query string or POST argument' },
use_cookie =>
{ type => BOOLEAN,
default => 0,
descr => 'Whether or not to use a cookie to track the session' },
cookie_name =>
{ type => SCALAR,
default => 'Apache-Session-Wrapper-cookie',
descr => 'Name of cookie used by this module' },
cookie_expires =>
{ type => UNDEF | SCALAR,
default => '+1d',
descr => 'Expiration time for cookies' },
cookie_domain =>
{ type => UNDEF | SCALAR,
optional => 1,
descr => 'Domain parameter for cookies' },
cookie_path =>
{ type => SCALAR,
default => '/',
descr => 'Path for cookies' },
cookie_secure =>
{ type => BOOLEAN,
default => 0,
descr => 'Are cookies sent only for SSL connections?' },
cookie_resend =>
{ type => BOOLEAN,
default => 1,
descr => 'Resend the cookie on each request?' },
header_object =>
{ type => OBJECT,
callbacks =>
{ 'has a method to set headers' =>
sub { grep { $_[0]->can($_) } @HeaderMethods } },
optional => 1,
descr => 'An object that can be used to send cookies with' },
class =>
{ type => SCALAR,
descr => 'An Apache::Session class to use for sessions' },
data_source =>
{ type => SCALAR,
optional => 1,
descr => 'The data source when using MySQL or PostgreSQL' },
user_name =>
{ type => UNDEF | SCALAR,
optional => 1,
descr => 'The user name to be used when connecting to a database' },
password =>
{ type => UNDEF | SCALAR,
default => undef,
descr => 'The password to be used when connecting to a database' },
table_name =>
{ type => UNDEF | SCALAR,
optional => 1,
descr => 'The table in which sessions are saved' },
lock_data_source =>
{ type => SCALAR,
optional => 1,
descr => 'The data source when using MySQL or PostgreSQL' },
lock_user_name =>
{ type => UNDEF | SCALAR,
optional => 1,
descr => 'The user name to be used when connecting to a database' },
lock_password =>
{ type => UNDEF | SCALAR,
default => undef,
descr => 'The password to be used when connecting to a database' },
handle =>
{ type => OBJECT,
optional => 1,
descr => 'An existing database handle to use' },
lock_handle =>
{ type => OBJECT,
optional => 1,
descr => 'An existing database handle to use' },
commit =>
{ type => BOOLEAN,
default => 1,
descr => 'Whether or not to auto-commit changes to the database' },
transaction =>
{ type => BOOLEAN,
default => 0,
descr => 'The Transaction flag for Apache::Session' },
directory =>
{ type => SCALAR,
optional => 1,
descr => 'A directory to use when storing sessions' },
lock_directory =>
{ type => SCALAR,
optional => 1,
descr => 'A directory to use for locking when storing sessions' },
file_name =>
{ type => SCALAR,
optional => 1,
descr => 'A DB_File to use' },
store =>
{ type => SCALAR,
optional => 1,
descr => 'A storage class to use with the Flex module' },
lock =>
{ type => SCALAR,
optional => 1,
descr => 'A locking class to use with the Flex module' },
generate =>
{ type => SCALAR,
default => 'MD5',
descr => 'A session generator class to use with the Flex module' },
serialize =>
{ type => SCALAR,
optional => 1,
descr => 'A serialization class to use with the Flex module' },
textsize =>
{ type => SCALAR,
optional => 1,
descr => 'A parameter for the Sybase storage module' },
long_read_len =>
{ type => SCALAR,
optional => 1,
descr => 'A parameter for the Oracle storage module' },
n_sems =>
{ type => SCALAR,
optional => 1,
descr => 'A parameter for the Semaphore locking module' },
semaphore_key =>
{ type => SCALAR,
optional => 1,
descr => 'A parameter for the Semaphore locking module' },
mod_usertrack_cookie_name =>
{ type => SCALAR,
optional => 1,
descr => 'The cookie name used by mod_usertrack' },
save_path =>
{ type => SCALAR,
optional => 1,
descr => 'Path used by Apache::Session::PHP' },
session_id =>
{ type => SCALAR,
optional => 1,
descr => 'Try this session id first when making a session' },
);
# What set of parameters are required for each session class.
# Multiple array refs represent multiple possible sets of parameters
my %ApacheSessionParams =
( Flex => [ [ qw( store lock generate serialize ) ] ],
MySQL => [ [ qw( data_source user_name
lock_data_source lock_user_name ) ],
[ qw( handle lock_handle ) ] ],
Postgres => [ [ qw( data_source user_name commit ) ],
[ qw( handle commit ) ] ],
File => [ [ qw( directory lock_directory ) ] ],
DB_File => [ [ qw( file_name lock_directory ) ] ],
PHP => [ [ qw( save_path ) ] ],
);
@ApacheSessionParams{ qw( Informix Oracle Sybase ) } =
( $ApacheSessionParams{Postgres} ) x 3;
my %OptionalApacheSessionParams =
( MySQL => [ [ qw( table_name password lock_password ) ] ],
Postgres => [ [ qw( table_name password ) ] ],
Informix => [ [ qw( table_name password ) ] ],
Oracle => [ [ qw( long_read_len table_name password ) ] ],
Sybase => [ [ qw( textsize table_name password ) ] ],
);
my %ApacheSessionFlexParams =
( store =>
{ MySQL => [ [ qw( data_source user_name ) ],
[ qw( handle ) ] ],
Postgres => $ApacheSessionParams{Postgres},
File => [ [ qw( directory ) ] ],
DB_File => [ [ qw( file_name ) ] ],
PHP => $ApacheSessionParams{PHP},
},
lock =>
{ MySQL => [ [ qw( lock_data_source lock_user_name ) ],
[ qw( lock_handle ) ] ],
File => [ [ ] ],
Null => [ [ ] ],
Semaphore => [ [ ] ],
},
generate =>
{ MD5 => [ [ ] ],
ModUniqueId => [ [ ] ],
ModUsertrack => [ [ qw( mod_usertrack_cookie_name ) ] ],
},
serialize =>
{ Storable => [ [ ] ],
Base64 => [ [ ] ],
Sybase => [ [ ] ],
UUEncode => [ [ ] ],
PHP => [ [ ] ],
},
);
@{ $ApacheSessionFlexParams{store} }{ qw( Informix Oracle Sybase ) } =
( $ApacheSessionFlexParams{store}{Postgres} ) x 3;
my %OptionalApacheSessionFlexParams =
( store => { map { $_ => $OptionalApacheSessionParams{$_} }
qw( MySQL Postgres Informix Oracle Sybase ) },
);
sub _SetValidParams {
my $class = shift;
my %extra;
for my $hash ( \%ApacheSessionParams,
\%OptionalApacheSessionParams,
@ApacheSessionFlexParams{ qw( store lock generate serialize ) },
@OptionalApacheSessionFlexParams{ qw( store lock generate serialize ) },
)
{
for my $p ( map { @$_ } map { @$_ } values %$hash )
{
my $h;
if ( ref $p ) {
# we assume its a hash of names/parameter specifications
$h = $p;
} elsif (!$params{$p}) {
# its a new parameter defined by a scalar, default to SCALAR value
$h = { $p => { optional => 1, type => SCALAR } };
} else {
lib/Apache/Session/Wrapper.pm view on Meta::CPAN
Corresponds to the "-secure" parameter. It defaults to false.
=item * cookie_resend => boolean
By default, this parameter is true, and the cookie will be sent for
I<every request>. If it is false, then the cookie will only be sent
when the session is I<created>. This is important as resending the
cookie has the effect of updating the expiration time.
=item * 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 an
C<err_headers_out()> or C<headers_out()> method.
Under mod_perl 1, this will default to the object returned by C<<
Apache->request() >>. Under mod_perl 2 we call C<<
Apache2::RequestUtil->request() >>
=back
=head2 Query/POST-Related Parameters
=over 4
=item * 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
I<first>, and then it checks for a cookie.
=item * param_object => object
This should be an object that provides a C<param()> method. This
object will be checked to see if it contains the parameter named in
"params_name". This object will probably be a C<CGI.pm> or
C<Apache::Request> object, but it doesn't have to be.
=back
=head2 Apache::Session-related Parameters
These parameters are simply passed through to C<Apache::Session>.
=over 4
=item * data_source => DSN
Corresponds to the C<DataSource> parameter passed to the DBI-related
session modules.
=item * user_name => user name
Corresponds to the C<UserName> parameter passed to the DBI-related
session modules.
=item * password => password
Corresponds to the C<Password> parameter passed to the DBI-related
session modules. Defaults to undef.
=item * handle => DBI handle
Corresponds to the C<Handle> parameter passed to the DBI-related
session modules. This cannot be set via the F<httpd.conf> file,
because it needs to be an I<actual Perl variable>, not the I<name> of
that variable.
=item * table_name => table name
Corresponds to the C<TableName> paramaeter passed to DBI-related
modules.
=item * lock_data_source => DSN
Corresponds to the C<LockDataSource> parameter passed to
C<Apache::Session::MySQL>.
=item * lock_user_name => user name
Corresponds to the C<LockUserName> parameter passed to
C<Apache::Session::MySQL>.
=item * lock_password => password
Corresponds to the C<LockPassword> parameter passed to
C<Apache::Session::MySQL>. Defaults to undef.
=item * lock_handle => DBI handle
Corresponds to the C<LockHandle> parameter passed to the DBI-related
session modules. As with the C<handle> parameter, this cannot
be set via the F<httpd.conf> file.
=item * commit => boolean
Corresponds to the C<Commit> parameter passed to the DBI-related
session modules.
=item * transaction => boolean
Corresponds to the C<Transaction> parameter.
=item * directory => directory
Corresponds to the C<Directory> parameter passed to
C<Apache::Session::File>.
=item * lock_directory => directory
Corresponds to the C<LockDirectory> parameter passed to
C<Apache::Session::File>.
=item * file_name => file name
Corresponds to the C<FileName> parameter passed to
C<Apache::Session::DB_File>.
=item * store => class
Corresponds to the C<Store> parameter passed to
C<Apache::Session::Flex>.
=item * lock => class
Corresponds to the C<Lock> parameter passed to
C<Apache::Session::Flex>.
=item * generate => class
Corresponds to the C<Generate> parameter passed to
C<Apache::Session::Flex>.
=item * serialize => class
Corresponds to the C<Serialize> parameter passed to
C<Apache::Session::Flex>.
=item * textsize => size
Corresponds to the C<textsize> parameter passed to
C<Apache::Session::Sybase>.
=item * long_read_len => size
( run in 2.484 seconds using v1.01-cache-2.11-cpan-9581c071862 )