如何将HTTP身份验证添加到基于PHP的Heroku应用程序中


How do I add HTTP authentication to a PHP-based Heroku app?

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

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

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

AuthUserFile/app/.htpasswdAuthType BasicAuthName"我的文件"需要有效的用户

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

有人知道这里发生了什么吗?在设置过程中,我有没有遗漏什么?

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

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

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