【问题标题】:How do I add HTTP authentication to a PHP-based Heroku app?如何将 HTTP 身份验证添加到基于 PHP 的 Heroku 应用程序?
【发布时间】:2015-06-04 09:30:30
【问题描述】:

我正在尝试向我的基于 php 的 Heroku 应用程序添加 HTTP 身份验证。我发现了一个很棒的 Github gist here,它提供了在我的 Heroku 目录中创建 .htaccess 和 .htpasswd 文件的代码。我目前在 /app/ 目录中都有这两个文件(因此 .htaccess 位于 /app/.htaccess 并且 .htpasswd 位于 /app/.htpasswd)。但是,当我导航到我的应用程序并输入用户名和密码时,我收到 500 内部服务器错误。检查 Heroku 日志文件,我只能看到我的 .htpasswd 文件没有找到:

(2)没有这样的文件或目录:[IP 已删除] AH01620:无法打开密码文件:/app/.htpasswd

这是我的 .htaccess 文件的全部内容:

AuthUserFile /app/.htpasswd AuthType 基本 AuthName“我的文件” 需要有效用户

如果我在 heroku 和 'ls -a' 上运行 bash,我可以看到我的 .htpasswd 文件肯定在 /app/ 目录中。

有人知道这里发生了什么吗?在进行此设置方面我有什么遗漏吗?

【问题讨论】:

    标签: php .htaccess heroku .htpasswd cedar


    【解决方案1】:

    想通了!我需要在我的项目主目录(在我的本地机器上)中创建 .htpasswd 文件,然后将该文件添加到我的 git repo 并将整个内容推送到 Heroku。出于某种原因,当我使用“heroku run bash”然后执行添加 .htpasswd 文件的命令时,似乎 Heroku 将该文件添加到了临时 dyno / 实例上,而不是我的应用程序的永久版本上。

    对于其他尝试这样做并需要简单的端到端解释的新手:

    • 按照以下说明在 git 存储库(在本地计算机上)的主目录中创建一个 .htaccess 文件 https://gist.github.com/bbrewer97202/3316425。对于我的应用程序,我遗漏了 AuthFile 行的 /www 部分,因为没有 /www/ 文件夹 在我的 Heroku 实例上。
    • 使用本地计算机上的终端,在 git repo 的主目录中创建一个 .htpasswd 文件,方法是键入 'htpasswd -c .htpasswd [username]' 进入该目录后。
    • 将所有内容提交到 git,然后推送到 Heroku 服务器。

    【讨论】:

    • 这样做是不安全的,因为任何可以访问您的存储库源(合作者?公共 probject?)的人也可以访问您的登录凭据。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-03-01
    • 1970-01-01
    • 2015-06-28
    • 1970-01-01
    • 2018-12-13
    • 1970-01-01
    • 2018-12-12
    相关资源
    最近更新 更多