我有一个 Web 应用程序,它根据传递的参数访问多个控制器类。对于某些控制器,我希望用户进行身份验证(通过简单的 HTTP 身份验证),而对于某些控制器,我希望进行公共访问。
有没有办法做到这一点?在我的 .htaccess 文件中,我现在有
AddHandler mod_python .py
PythonHandler handler
PythonAuthenHandler handler
PythonDebug On
AuthType Basic
AuthName "My Realm"
AuthBasicAuthoritative Off
require valid-user
authenhandler 被正确调用,但即使我只是这样做
def authenhandler(req):
return apache.OK
要求用户输入密码(尽管输入的任何密码都被接受)
我尝试从 .htaccess 中完全删除 Auth* 的东西(和 require 指令),并在正常处理程序中针对我确实需要身份验证的情况(但未找到)执行以下操作:
request.err_headers_out.add('WWW-Authenticate', 'Basic realm="My Realm")
return apache.HTTP_UNAUTHORIZED
这就是我理解服务器在未收到正确身份验证时应该做什么。然而,这也不起作用。
我来自 PHP 背景,我知道后者是它在 PHP 中的完成方式——但 PHP 有时会做一些额外的小块未记录的魔法来使这些东西真正起作用。这是其中一种情况吗?
有什么方法可以根据传递的 URL 从同一个处理程序选择性地请求身份验证?