When I put a PerlAccessHandler inside a LimitExcept, it does not seem to
work within the LimitExcept.  It behaves as if there was no LimitExcept.

For instance, I wrote a simple access handler for webdav that only allows
users into their own directories.  So user "joe" can only get to
/home/joe/public_html with webdav and all users are in the same password
file.  I also don't need to setup every users' directory like this:

<Directory /home/joe/public_html>
 ...
require user joe
</Directory>

Instead I was able to do this:

<Directory /home/*/public_html>
    DAV On
    AllowOverride None
    Options None
    <LimitExcept GET HEAD POST OPTIONS>
        Order allow,deny
        Allow from all
        AuthName WebDav
        AuthType basic
        PerlAccessHandler Apache::AuthByDir
        require valid-user
        AuthUserFile /home/httpd/users/passwd
    </LimitExcept>
</Directory>

My AuthByDir simply parses the user from the file name requested and
DECLINEDs when the user name enterred is the same as the user directory in
the filename.  That way basic authentication will get called, otherwise it
returns FORBIDDEN.

The LimitExcept is so that visitors do not need to authenticate, but web dav
users do.  Without my PerlAccessHandler, normal visitors don't get prompted
for user and password.  But when I put my access handler in as above, every
visitor gets prompted for username and password.

Is this just the way is it or might I have some other bug?  I guess I could
check for the GET, HEAD, etc., in my access handler but that would mean my
handler would get called for the majority of the requests.


--
Joe Pearson
Database Management Services, Inc.
208-384-1311 ext. 11
http://www.webdms.com


Reply via email to