htaccess:特定用户代理的用户身份验证

问题描述 投票:1回答:1

一些背景信息:我有一个Qnap NAS,并希望使用不同的电台(基本上是一个服务器应用程序)为我自己的客户提供音乐和图片,如我的智能手机和笔记本电脑。在智能手机上我使用Qnap应用程序Qmusic和Qphoto。它工作得很好,我只是不喜欢用户“admin”登录到电台的能力。

我可以通过.htaccess中的身份验证规则完全阻止某些用户。这通过Web浏览器访问工作站时工作正常,但会导致应用程序出现问题,因为他们不希望这样的身份验证。

现在我的问题是:我需要在.htaccess文件中使用if-then-else程序,如下所示:

if user-agent is not "Qmusic" then <authenticate> end if

如果条件不正确,则应忽略此项。这可以以某种方式完成吗?

我在互联网上搜索了很长一段时间但没有找到合适的东西。

感谢您的支持。

apache .htaccess authentication
1个回答
0
投票

您可能想查看Apache mod_authz_core文档,特别是Require env指令。将引用的示例与this answer中的示例相结合,允许您基于用户代理设置变量,然后从该身份验证中免除该用户代理。

请注意,引用的答案是针对较旧的Apache 2.2语法,该语法在mod_access_compat模块的2.4中仍然可用,但更新的语法是首选。

Apache 2.4示例:

SetEnvIf User-Agent ^Qmusic no-auth

AuthType Basic
AuthName "Protected Login"
AuthUserFile /path/to/htpasswd
Require valid-user
Require env no-auth

请注意,除非另有说明,否则多个Require指令隐式包含在<RequireAny>块中。这意味着请求必须匹配来自htpasswd的有效用户或您选择的任何auth机制,或者请求必须与我们为no-auth用户代理设置的Qmusic环境变量匹配。

© www.soinside.com 2019 - 2024. All rights reserved.