Hello mod_perl users,

I am developing a mod_perl module (MyModule) to manage
sessions/authentication.
This module:
     - uses Apache::Session to store session-related information
     - is cookie-based
     - manages session inactivity

This module could be used in the following example.

<Location /protected_url>
PerlAuthenHandler MyModule
AuthType Basic
AuthBasicProvider ...
require valid-user
PerlFixupHandler MyModule->cookie_create_refresh
</Location>

If request has no cookie, then basic authentication is required.
     If basic authent is correct, then a cookie is created in the fixup
handler.
If request has a cookie, then the cookie is refreshed in the fixup handler.


A basic description of the module in pseudo-perl:

package MyModule;
use Apache::Session::xxx;
use Apache::Cookie;

sub handler{
    my $r = shift;

    if (cookie_not_present_in_request()){
         return DECLINED;
     }
    return cookie_verify();  #use of Apache::Session as a DB storage
}

sub cookie_create_refresh{
   my $class = shift;
    if (cookie_not_present_in_request()){
          create_cookie_with_Apache::Session::xxx_module();
          create_cookie_with_Apache::Cookie_module();
    }
    else {
          refresh_cookie_with_Apache::Session::xxx_module();
          refresh_cookie_with_Apache::Cookie_module();
    }
    return OK;
}

The module I am developing has to delete the cookie if it is not refreshed
regularly.
The question: how can I manage this timeout inactivity ?
The best solution would be to use a mechanism where callbacks (deleting the
cookie rfom the database) would be called automatically on inactivity.
Does such an API is proposed by :
     . the APR API
     . mod_perl API
     . an Apache2::xxx perl module
     . a CPAN module

If not, how can I solve my problem ? (I could verify regularly in the DB
storage, but this is a last resort solution. Even in this case, how could I
implement it ?)

Thanks

Gaetan

Reply via email to