Через Remember me всегда возвращает false

#php #laravel-5.1 #remember-me

#php #laravel-5.1 #remember-me

Вопрос:

Прежде чем я опубликовал это, я провел некоторый поиск, но все же я не знаю, что он всегда возвращает false . Мой код приведен ниже

HTML

 <input type="checkbox" name="remember"/> {{ trans('login.text_remember_me') }}
  

контроллер

 $remember = ($request->has('remember')) ? true : false;

if (Auth::attempt($credentials, $remember))
  

Затем после успешного входа в систему. Я проверил dd(Auth::viaRemember()); и он возвращает false . Даже изменил мой config/session.php установка ‘expire_on_close’ => true из false.

По сути, я хочу, чтобы, когда пользователь установил флажок remember me, я установил время жизни сеанса на 3 дня, а затем только на 1 день.

Обновлено

Из $request-> all() вот результат после нажатия кнопки входа в систему с флажком remember me

 array:6 [▼
  "_token" => "...."
  "email" => "myemail@gmail.com"
  "password" => "...."
  "remember" => "on"
  "uri" => ""
  "code" => ""
]
  

затем я удалил в своем контроллере панели инструментов, я проверил метод viaRemember

 dd(Auth::viaRemember()); // result: false
  

Комментарии:

1. получаете ли вы правильное значение на конце контроллера, значит, вы установили флажок, вы получаете значение? добавьте свой request дамп-массив в свой вопрос, чтобы дать вам предложение

2. да, я пытался сбросить запрос на «запомнить» перед условием if, и он показал true, но когда я вызвал viaRemember, он показал false .. 🙁

3. Я прошу вас поделиться результатами вашего дампа

4. Я обновил свой вопрос, чтобы добавить результат дампа. Извините

Ответ №1:

Обновите эту строку

 $remember = ($request->has('remember')) ? true : false;
  

к этому, а затем проверьте.

 $remember = ($request->get('remember') == 'on') ? true : false;
  

Комментарии:

1. тот же результат. Он всегда возвращает false. Я использую laravel 5.1 на всякий случай. 🙁

2. замените это $request->input('remember') на this $request->get('remember') , а затем попробуйте

3. все тот же результат. :(. Я проверил значение remember me перед отправкой, и оно получило правильное логическое значение, но странная часть в том, что когда я проверял с помощью viaRemember(), оно всегда возвращало false. 🙁

4. перепишите ваш this line if (Auth::attempt($credentials, true)) pass true напрямую, а затем проверьте, viaRemember() работает это или нет? можете ли вы поделиться своей users структурой таблицы? в вашей таблице users должно быть имя столбца remember_token , потому что он хранит токен remember me в DB

5. После успешного входа в систему он по-прежнему остается false. У меня есть столбец remember_token от table user, и я проверил значение столбца, и в нем есть значение. Также я проверил весь свой репозиторий, если я, возможно, где-то переопределил Auth::attempt, но ничего не нашел. 🙁

Ответ №2:

добавьте «id = remember me» в поле ввода

 <input type="checkbox" name="remember" id="remember"/> 
  

не уверен.