Как добавить аутентификацию HTTP в приложение Heroku на основе PHP?

Я пытаюсь добавить HTTP-аутентификацию в свое приложение Heroku на основе php. Я нашел отличный Github gist здесь, который содержит код для создания файлов .htaccess и .htpasswd в моем Heroku. каталог. В настоящее время у меня есть оба файла в каталоге /app/ (поэтому .htaccess находится в /app/.htaccess, а .htpasswd — в /app/.htpasswd). Однако, когда я перехожу к своему приложению и ввожу имя пользователя и пароль, я получаю внутреннюю ошибку сервера 500. Проверяя файл журнала Heroku, я вижу только, что мой файл .htpasswd не найден:

(2) Нет такого файла или каталога: [IP-адрес удален] AH01620: Не удалось открыть файл паролей: /app/.htpasswd

Вот полное содержимое моего файла .htaccess:

AuthUserFile /app/.htpasswd AuthType Базовый AuthName «Мои файлы» Требуется действительный пользователь

Если я запускаю bash на heroku и ls -a, я вижу, что мой файл .htpasswd определенно находится в каталоге /app/.

Кто-нибудь знает, что здесь происходит? Есть ли что-то, чего мне не хватает в плане настройки?


person Sam    schedule 31.03.2015    source источник


Ответы (1)


Догадаться! Мне нужно было создать файл .htpasswd в главном каталоге моего проекта (на моей локальной машине), затем добавить файл в мой репозиторий git и отправить все это в Heroku. По какой-то причине, когда я использовал «heroku run bash», а затем выполнил команду для добавления файла .htpasswd, кажется, что Heroku добавил этот файл во временный dyno/экземпляр, а не в постоянную версию моего приложения.

Для других новичков, которые пытаются это сделать и нуждаются в простом сквозном объяснении:

  • Создайте файл .htaccess в главном каталоге репозитория git (на локальном компьютере) в соответствии с инструкциями на странице https://gist.github.com/bbrewer97202/3316425. Для моего приложения я пропустил часть /www строки AuthFile, потому что в моем экземпляре Heroku нет папки /www/.
  • Используя терминал на локальном компьютере, создайте файл .htpasswd в главном каталоге вашего репозитория git, набрав «htpasswd -c .htpasswd [имя пользователя]», когда вы находитесь в этом каталоге.
  • Зафиксируйте все в git, а затем отправьте на сервер Heroku.
person Sam    schedule 31.03.2015
comment
Это небезопасно, потому что любой, кто получит доступ к источникам вашего репозитория (сотрудник? общедоступный проект?), также будет иметь доступ к вашим учетным данным для входа. - person VxJasonxV; 03.06.2016