首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用mod-python使HTTP身份验证可选

使用mod-python使HTTP身份验证可选
EN

Stack Overflow用户
提问于 2009-09-24 13:10:42
回答 1查看 1.9K关注 0票数 1

我有一个web应用程序,它根据传递的参数访问多个控制器类。对于某些控制器,我希望用户(通过简单的HTTP身份验证)对自己进行身份验证,而对于一些控制器,我希望进行公共访问。

有什么办法让这事发生吗?在我的.htaccess文件中,我现在

代码语言:javascript
复制
AddHandler mod_python .py
PythonHandler handler
PythonAuthenHandler handler
PythonDebug On

AuthType Basic
AuthName "My Realm"
AuthBasicAuthoritative Off
require valid-user

作者的调用是正确的,但是即使我这样做了

代码语言:javascript
复制
def authenhandler(req): 
    return apache.OK

用户被要求提供密码(尽管输入的任何密码都被接受)

我尝试从.htaccess中完全删除Auth* handler (和require指令),并在普通处理程序中对我需要身份验证的情况执行以下操作(没有找到它):

代码语言:javascript
复制
request.err_headers_out.add('WWW-Authenticate', 'Basic realm="My Realm")
return apache.HTTP_UNAUTHORIZED

这就是我所理解的服务器在没有接收到正确的身份验证时应该做什么。然而,这也不起作用。

我来自PHP背景,我知道后者是如何在PHP中实现的--但是PHP有时会做一些额外的无文档化的魔术来使这些东西真正发挥作用。这是其中一个案子吗?

根据传递的URL,是否有任何方法可选地从同一个处理程序请求身份验证?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-05-27 09:46:44

有几种方法可以使用Apache指定身份验证范围,大多数人习惯于基于gt;Directorylt;,即目录中或目录下的任何内容都会根据htpasswd进行身份验证。

还有gt;Locationlt;,它将指令应用于文件系统之外的内容,如mod_python注册代码。

如果启用了“虚拟”路径(如/status ),则可以通过此方式设置身份验证。

您可以对mod_python路径执行相同的操作。

代码语言:javascript
复制
<Location /python/app1/>
   Order allow,deny
   Allow from all
</Location>

<Location /python/app2/>
   Order allow,deny
   Allow from all
   AuthType             basic
   AuthName             "Protected Intranet Area"
   AuthUserFile         /etc/apache2/htpasswd
   Require              valid-user
</Location>

我应该补充一句--你的意思不一定是‘一些用户应该使用用户名和密码进行身份验证,而其他用户只需要输入用户名’

“有些应用程序需要100%的时间进行身份验证,而其他应用程序则应该100%的时间免费使用”

我的第一个回答列出了最后一个问题。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1471602

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档