#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))
passtrue
напрямую, а затем проверьте,viaRemember()
работает это или нет? можете ли вы поделиться своейusers
структурой таблицы? в вашей таблице users должно быть имя столбцаremember_token
, потому что он хранит токен remember me в DB5. После успешного входа в систему он по-прежнему остается false. У меня есть столбец remember_token от table user, и я проверил значение столбца, и в нем есть значение. Также я проверил весь свой репозиторий, если я, возможно, где-то переопределил Auth::attempt, но ничего не нашел. 🙁
Ответ №2:
добавьте «id = remember me» в поле ввода
<input type="checkbox" name="remember" id="remember"/>
не уверен.