Задать вопрос
youmixx
@youmixx
PHP Developer

Почему не работает внутреняя авторизация на nginx ларавел?

Много текста, но нужна помощь.
У меня есть на сайт на Laravel. Мне нужно установить на него пароль, у меня стоит nginx.
В конфиге я прописал следующие:
auth_basic "Restricted";
auth_basic_user_file /etc/nginx/conf.d/.htpasswd;

Естественно файл с паролем создан нормально.

Захожу на сайт - он просит ввести лог и пас, все как нужно. Я ввожу, он пропускает меня на сайт и я даже могу переключаться между страницами. Но, если я попробую авторизоваться на сайте (сама авторизация написанная уже кодом), то nginx снова начнет просить пароль и логин, но на этот раз не принимать их (вводишь - нажимаешь "Вход", он опять просит).

Я много что перепробовал и реально не понимаю в чем суть. Смотрел логи, там ничего нигде не нашел, я не понимаю почему не пускает.

Я точно не знаю в чем проблема, но тогадка - это во внутреннем API.
Многие запросы, в том числе и запрос об авторизации как я понял идет на api. Потому-что когда после авторизации, он просит меня ввести пароль и если я нажму "Отмена" - то у запросов типа domen.ru/api - произойдет ошибка 401, т.е. ошибка авторизация.

Там несколько таких запросов, но например не проходит и /api/user, которые и отвечает как я понял за авторизацию внутренюю. Не могу понять, почему такое происходит.
  • Вопрос задан
  • 554 просмотра
Подписаться 1 Средний 2 комментария
Решения вопроса 1
@MadridianFox
Web-программист, многостаночник
Не работает потому что nginx и веб-приложение используют один и тот же http заголовок для передачи данных авторизации. Универсального решения нет.
Как вариант, если приложение и так закрыто своей авторизацией, то basic можно и не делать. Или можно изменить заголовок авторизации в веб-приложении. Или попытаться разнести бэк и фронт на разные домены, чтобы одно было закрыто бейсиком, а другое собственной авторизацией.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
vanyahuk
@vanyahuk
Попробуйте вот так прописать

set $auth_basic off;

    if ($request_method = 'GET') {
         set $auth_basic "Restricted";
    }
    auth_basic $auth_basic;
    auth_basic_user_file /etc/nginx/conf.d/.htpasswd;
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы