Я использую Laravel 5.7 и успешно отсортировал вход и выход для пользователя, используя ручную аутентификацию.
У меня есть это в моем шаблоне блейд-логина для предупреждения о неверных учетных данных:
@if (Session::has('status'))
<div class="alert alert-danger text-center" role="alert">
{!! Session::get('status') !!}
</div>
@endif
Это в моем контроллере, после определения того, что предоставленные имя пользователя и пароль не принимаются:
$request->session()->flash('status', 'These credentials are not working.<br>Refresh and try again.');
return redirect()->back()->withInput();
Когда это работает, я получаю сообщение о статусе и имя пользователя предоставляется.Я не могу понять, что будет дальше.Я пробовал все следующее, и иногда сообщение будет отображаться снова, а иногда нет.Это никогда не показывалось более двух раз подряд.И как только он не показывается, кажется, не показывается некоторое время.
- Введите другой пароль (хотя имя пользователя уже было введено)
- Обновите браузер и попробуйте оба снова
- измените имя пользователя, а затем введите пароль
Даже когда я очищаю куки, это, кажется, не имеет никакого значения.Я дважды проверил настройки файлов cookie и сеансов в файлах .env и config.Я не получаю сообщений об ошибках.Я использую базу данных с MySQL.Я использовал миграцию для построения таблицы сессий.
Сессии, отмеченные в базе данных, не дублируются ненадлежащим образом.Последнее поле активности обновляется соответствующим образом.
Когда я просматриваю файл cookie сеанса в Chrome, он меняется после каждой отправки.Я не имею в виду XSRF-TOKEN, я имею в виду сессионный cookie.Я удивлен, что это меняется.
Я думаю, что мой код в порядке, но у меня где-то неправильная настройка.Куда мне смотреть?
ОБНОВЛЕНИЕ: Если я установлю флажок «Отключить кэш, когда DevTools открыт», он будет работать намного лучше.Я могу отправить неверные учетные данные, и он покажет сообщение и имя пользователя в поле.Если я ввожу пароль и отправляю его перенаправления на чистый логин, ни сообщения, ни данных.
Если я получу сообщение и затем вручную обновлю браузер до нового имени входа, я получу сообщение снова, вероятно, в половине случаев.Но затем я снова попытаюсь сделать то же самое (обновить, повторить попытку) и снова получить несколько перенаправлений на страницу входа без данных / сообщений.