2016-04-19 5 views
-1

Я пишу приложение Laravel 5.2. Мне нужно вручную войти в систему пользователя, для которого я использую \Auth::login($user). Я делаю это следующим образом.

if ($user = User::where('phone',session('phone'))->first()) 
    { 
     \Auth::login($user); 

     // \Auth::loginUsingId($user->id); 
     // Auth::attempt(['email' => $user->email, 'password' => 'password']); 

     $data = \Auth::user(); //returning correct results 
    } 

Я попробовал все варианты, а именно Auth::login($user), Authh:loginUsingId($user->id) и attempt метод. Эти методы работают нормально, поскольку переменная $ data хранит объект корректного пользователя. Но проблема в том, что когда я перехожу на другой маршрут, скажите '/home', пользователь не будет более аутентифицирован.

Что может быть неправильным? Как я мог сделать это правильно?

+0

http://laravel-tricks.com/tricks/temporary-user-switching Я попробовал эту ссылку, работает очень хорошо :) дайте мне знать если это поможет! – Markinson

+0

нет, здесь это не поможет. Потому что я реализовал то же самое с разных точек зрения. У меня проблема с сохранением подлинности. –

+0

Какова ваша установка маршрута? Использует ли ваш маршрут '/ home'' web' и 'auth' middlewares? –

ответ

0

Начиная с Laravel 5.2, вы должны прикрепить все свои маршруты, которые нуждаются в сеансе, с the 'web' middleware. См. Ваше приложение/Http/Kernel.php, промежуточное программное обеспечение 'web' содержит \ Illuminate \ Session \ Middleware \ StartSession.

0

В маршрутах вы должны использовать Интернет в Laravel 5,2

Route::group(['middleware' => ['web', 'auth']], function() { 
    Route::get('/', '[email protected]'); 
    Route::get('/profile', '[email protected]'); 
}); 
Смежные вопросы