Через "Помни меня, всегда возвращай ложь"

Перед тем, как опубликовать это, я немного искал, но все же не знаю, что он всегда возвращает 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.

В основном я хочу, чтобы когда пользователь установил флажок "Запомнить меня", я установлю время жизни сеанса на 3 дня, а в противном случае - только на 1 день.

Обновлено

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

array:6 [▼
  "_token" => "...."
  "email" => "[email protected]"
  "password" => "...."
  "remember" => "on"
  "uri" => ""
  "code" => ""
]

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

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

person Wondering Coder    schedule 06.10.2016    source источник
comment
вы получаете правильное значение в конце контроллера, означает, что вы установили флажок, вы получаете значение? добавьте свой request массив дампа в свой вопрос, чтобы дать вам предложение   -  person Qazi    schedule 06.10.2016
comment
да, я попытался сбросить запрос на запоминание перед условием if, и он показал истину, но когда я позвонил черезRemember, он показал ложь .. :(   -  person Wondering Coder    schedule 06.10.2016
comment
Прошу поделиться своими результатами Дампа   -  person Qazi    schedule 07.10.2016
comment
Я обновил свой вопрос, чтобы добавить результат дампа. Извините   -  person Wondering Coder    schedule 10.10.2016


Ответы (2)


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

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

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

$remember = ($request->get('remember') == 'on') ? true : false;
person Qazi    schedule 13.10.2016
comment
тот же результат. Он всегда возвращает false. На всякий случай использую laravel 5.1. :( - person Wondering Coder; 13.10.2016
comment
замените этот $request->input('remember') на этот $request->get('remember'), а затем попробуйте - person Qazi; 13.10.2016
comment
все тот же результат. :(. Я проверил значение помните меня перед отправкой, и оно действительно получило правильное логическое значение, но странно то, что когда я проверял с помощью viaRemember (), он всегда возвращал false. :( - person Wondering Coder; 13.10.2016
comment
перепишите эту строку if (Auth::attempt($credentials, true)) передайте true напрямую, а затем проверьте, работает ли viaRemember()? вы можете поделиться своей users структурой таблиц? в вашей таблице пользователей должно быть имя столбца remember_token, потому что он хранит токен запомнить меня в БД - person Qazi; 13.10.2016
comment
После успешного входа в систему он все еще остается ложным. У меня есть столбец remember_token, включенный пользователем таблицы, и я проверил значение столбца, и в нем есть значение. Также я проверил все свое репо, возможно, я где-то переопределил попытку Auth ::, но ничего не нашел. :( - person Wondering Coder; 14.10.2016
comment
Удалите старые файлы cookie и попробуйте - person Qazi; 14.10.2016
comment
тот же результат. Пытался удалить файлы cookie в моем браузере, а также использовал режим инкогнито. Он по-прежнему возвращает false. Если это может помочь, мой драйвер сеанса - это файл, а для параметра expire_on_close установлено значение false. - person Wondering Coder; 14.10.2016

добавить «id = запомнить меня» в поле ввода

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

не уверен.

person บัณฑิต นวเจริญชัย    schedule 03.09.2019