NAME

Apache2::ASP::RequestFilter - Filter incoming requests

SYNOPSIS

package My::MemberFilter;

use strict;
use warnings 'all';
use base 'Apache2::ASP::RequestFilter';
use vars __PACKAGE__->VARS;

sub run {
  my ($self, $context) = @_;
  
  if( $Session->{is_logged_in} )
  {
    # The user is logged in - we can ignore this request:
    return $Response->Declined;
  }
  else
  {
    # The user must authenticate first:
    $Session->{validation_errors} = { general => "You must log in first" };
    return $Response->Redirect("/login/");
  }# end if()
}

1;# return true:

Then, in your apache2-asp-config.xml:

<config>
  ...
  <web>
    ...
    <request_filters>
      <filter>
        <uri_match>/members/*</uri_match>
        <class>My::MemberFilter</class>
      </filter>
      ...
    </request_filters>
  </web>
  ...
</config>

DESCRIPTION

Subclass Apache2::ASP::RequestFilter to instantly apply rules to incoming requests.

These RequestFilters also work for testing via Apache2::ASP::Test::Base and Apache2::ASP::API.

RequestFilters vs TransHandlers

The difference between RequestFilters and Apache2::ASP::TransHandlers is that within a RequestFilter, you have access to all of the normal ASP objects ($Request, $Response, $Session, etc).

In a TransHandler, you only have access to the Apache2::RequestRec $r and the Apache2::ASP::Config (and only then if you load it up yourself via Apache2::ASP::ConfigLoader.

NOTE: - TransHandlers are configured in the httpd.conf and are only executed in a real Apache2 httpd environment. They are not executed during testing or via Apache2::ASP::API.

ABSTRACT METHODS

run( $self, Apache2::ASP::HTTPContext $context )

Return -1 (or $Response->Declined) to allow the current RequestFilter to be ignored.

Returning anything else...

return $Response->Redirect("/unauthorized/");

...results in the termination of the current request right away.

BUGS

It's possible that some bugs have found their way into this release.

Use RT http://rt.cpan.org/NoAuth/Bugs.html?Dist=Apache2-ASP to submit bug reports.

HOMEPAGE

Please visit the Apache2::ASP homepage at http://www.devstack.com/ to see examples of Apache2::ASP in action.

AUTHOR

John Drago <jdrago_999@yahoo.com>

COPYRIGHT AND LICENSE

Copyright 2007 John Drago, All rights reserved.

This software is free software. It may be used and distributed under the same terms as Perl itself.