Laravel по-русски

Русское сообщество разработки на PHP-фреймворке Laravel.

Ты не вошёл. Вход тут.

#1 06.01.2017 20:22:16

Не работает сессия при аунтeфикации через Auth::attempt

Дорогие друзья, столкнулся с проблемой, которую опишу ниже, прошу разобраться с ней. К сожалению с Laravel имею опыта маловато, причем работал с 4 версией продукта.

Операционная система: Windows 10 64
Сервер: Open Server с PHP 5.6 и Apatch 2.4
Laravel 5.3

Стоит глобальная задача , "перенести" сайт с 4 версии Ларки на 5.3. Проблема возникла при разработке формы входа на сайте. В связи с тем, что данная форма должна работать на аяксе, было решено отказаться от использования стандартного решения аунтефикации в пользу своего.

Сделал форму, написал аякс обработчик, прописал в роутер маршрут:

Route::post('auth', 'AjaxUserController@auth');

Ну и собственно в данном методе без лишней шелухи всего одна строка:

if (Auth::attempt(['email' => $email, 'password' => $password], true)) { ...

В Laravel 4, это работает без проблем, думал, что и в Laravel 5.3 сложности не будет, но, как говорится, что-то пошло не так sad

По итогу, метод отрабатывает и возвращает true, как положено. Следом можно вернуть данные о юзере через Auth:user() - все отлично.

Но если обновить страницу, то if(Auth:check()){ ... выдаст false

Какая-то проблема как будто с сессией.

При этом, если воспользоваться дефолтной формой, то все прекрасно работает.

Не пойму вот в чем проблема, кучу всего уже перелопатил и статей и видео, не пойму в чем проблема. Где то читал, что нужно делать middleware дополнительно, в других источниках пишут, что и так должно работать.


Прошу разобраться с ситуацией.

Не в сети

#2 06.01.2017 20:46:44

Re: Не работает сессия при аунтeфикации через Auth::attempt

Убери web middleware из маршрутов и сравни свой Kernel.php со стандартным в 5.3 версии.

Не в сети

#3 06.01.2017 20:56:11

Re: Не работает сессия при аунтeфикации через Auth::attempt

AlexeyMezenin пишет:

}%Убери web middleware из маршрутов и сравни свой Kernel.php со стандартным в 5.3 версии.

Kernel.php у меня стандартный, единственное, что не так - закомментирована строка на проверку токена -\App\Http\Middleware\VerifyCsrfToken::class,

Попробовал убрать web - все тоже самое sad

Не в сети

#4 06.01.2017 21:13:02

Re: Не работает сессия при аунтeфикации через Auth::attempt

web обратно не возвращай, если вернешь в web.php, то сессии будут глючить. Очисти кэш маршрутов и общий кэш:

php artisan route:clear
php artisan cache:clear

Если не поможет, ищи проблему в Kernel и своем коде.

Изменено AlexeyMezenin (06.01.2017 21:16:40)

Не в сети

#5 07.01.2017 11:44:50

Re: Не работает сессия при аунтeфикации через Auth::attempt

Потратил кучу времени, но в итоге разобрался с проблемой. Главная проблема, впрочем как всегда, оказалось в том, что кто-то рукожоп.

При отработка

if (Auth::attempt(['email' => $email, 'password' => $password], true)) { ..

у меня на клиент возвращалась либо строка вида: echo 'success'; , либо json, который отправлялся, опять же, через echo  json_encode([]). Проблема именно в том, что если выводить что-то через echo, то перестает работать сессия. Хз почему это так работает, но вот именно так.

Как решение, отдавать результат через  return response()->json();

Ах, я балбес)

Не в сети

#6 07.01.2017 12:09:30

Re: Не работает сессия при аунтeфикации через Auth::attempt

Хочешь сказать, что у тебя с web middleware в web.php маршруты нормально с сессией работают?

Не в сети

#7 07.01.2017 13:10:41

Re: Не работает сессия при аунтeфикации через Auth::attempt

AlexeyMezenin пишет:

}%Хочешь сказать, что у тебя с web middleware в web.php маршруты нормально с сессией работают?

Вроде пока все нормально. Если возникнут проблемы, отпишусь в этом топе. И спасибо за помощь

Не в сети

Подвал раздела