如何使用htaccess和htpasswd对ModX网站中的资源进行密码保护


How do I password protect resources in a ModX Website using htaccess and htpasswd?

我们试图在ModX安装中保护几个不同的资源。当前的.htaccess代码如下(不包括所有ModX的东西)

AuthName "Dialog prompt"
AuthType Basic
AuthUserFile /var/www/vhosts/mywebsite.co.uk/.htpasswd
<FilesMatch ^index.php'?q=71$>
    require valid-user
</FilesMatch>

演习的目的是保护以下资源:

  • http://mywebsite.co.uk/index.php?q=71
  • http://mywebsite.co.uk/area/protected
我已经尝试了位置匹配,位置,文件

和文件匹配的各种组合,但无法使其工作。

提前谢谢你

你可能不需要 htaccess。您可以从正确的系统事件发送 http://php.net/manual/en/features.http-auth.php HTTP 身份验证标头

这就是整个解决方案:

如果其他人需要知道,我创建了一个名为passwordprotect的代码片段,并放在页面顶部:[[passwordprotect]]。然后我输入了以下代码(对上述响应的改编):

<?php
if(isset($_SERVER['PHP_AUTH_USER']) && ($_SERVER['PHP_AUTH_USER']=='user') &&     ($_SERVER['PHP_AUTH_PW']=='password'))
{
    echo 'You are successfully logged in.';
} else {
    header('WWW-Authenticate: Basic realm="Protected area"');
    header('HTTP/1.0 401 Unauthorized');
    echo 'Text to send if user hits Cancel button';
    exit;
}

编辑:如果你发现这有时确实有效,有时不起作用,这可能是因为使用[[密码保护]],modx将缓存代码片段。我在革命上取得了更好的成功:[!passwordprotect]]。我认为代码是进化上的[!passwordprotect!]。感叹号只是表示不缓存代码段。希望对某人有所帮助!

绝对没有理由这样做,并且使 MODX 革命 ACL 的全部目的无效。正确答案是:

  1. 建立具有可以访问资源的最低角色的用户组。
  2. 在资源组中创建测试资源。
  3. 将站点管理员添加到资源组。
  4. 在资源组中创建测试用户。
  5. 刷新网站缓存。
  6. 注销所有用户 - 包括您自己。
  7. 测试
  8. ACL - 在管理器和前端与站点管理员一起测试。
  9. 注销或使用完全不同的浏览器并与测试用户一起进行测试。
  10. 工作后,将受保护的文档移动到资源组。
  11. 将用户添加到要具有访问权限的组。
  12. 删除代码段。

如果您需要更多帮助,请获取我的书的副本或访问我的网站。