2016-02-13 4 views
6

Это моя первая попытка пакета laravel и столкнулась с проблемой, когда Auth :: попытка ($ credentials) работает в моем контроллере входа, но при перенаправлении на защищенный маршрут или контроллер, пользователь больше не аутентифицируется. Ниже приведен мой метод контроллера логина с записями переадресации на панель управления.Пользователь Auth не сохраняется в пакете Laravel

public function attempt(Request $request){ 

    $email = strtolower(strip_tags(htmlspecialchars($request->input('email')))); 
    $password = strip_tags(htmlspecialchars($request->input('password'))); 

    if (Auth::attempt(array('email' => $email, 'password' => $password))) 
    { 
     // Redirect to dashboard route 
     //return redirect()->intended('/admin'); 
     if(Auth::check()) 
      print_r(Auth::user()); 
    } 
} 

Ответ на действительные учетные данные выводит правильную запись пользователя, а Auth :: check возвращает true. Но при перенаправлении на контроллер администратора пользователь не аутентифицируется. Ниже приведен метод контроллера администратора, который должен выводить аутентифицированного пользователя, но возвращает только «не зарегистрированный».

public function index() 
{ 
    if(Auth::check()) print_r(Auth::user()); 
    else echo "not logged"; 
} 

Оба контроллера используют Auth ;, их пространства имен в соответствии с продавцом/пакет/pathToDir, дБ настроен правильно, и ключ шифрования был установлен. Любые идеи о том, что происходит не так? Спасибо

ответ

14

Оказывается, этот вопрос с новым веб промежуточного слоя, переместил все мои маршруты, которые требуют данных сеанса в группе маршрутизации и все работает нормально.

Route::group(['middleware' => ['web']], function() { 

    Route::get("/login", ['uses'=>'[email protected]']); 
    Route::post("/login", ['uses'=>'[email protected]']); 
    Route::get("/logout", ['uses'=>'[email protected]']); 

    Route::group(['prefix' => 'admin', 'middleware' => 'auth'], function() { 
     Route::get('/', ['uses'=>'[email protected]']); 
    }); 
}); 
+1

Вы спасли мой день! Оказывается, для маршрутов по умолчанию в 'routes/web.php' Laravel применяет всю промежуточную группу, называемую« сеть ». И не применяет эту группу к внешним маршрутам пакетов, загружаемым через метод поставщика услуг $ this-> loadRoutesFrom (__ DIR __. '/ Routes.php'); ' –

0

Поведение метода по умолчанию заключается в том, что пользователь не регистрирует пользователя.

Вы должны изменить его на:

if (Auth::attempt(array('email' => $email, 'password' => $password), false, true)) 

Таким образом, вы будете устанавливать remember как ложные и login как истинный.

Проверить больше об этом здесь: https://laravel.com/docs/5.2/authentication

Смежные вопросы