У меня есть auth, делая это при входе в систему.
if (Auth::attempt($userdata)) { dd(Auth::user()); //this shows the user just fine, //which proves that the auth driver is working. return redirect()->intended('dashboard'); }
Однако после перенаправления на приборную панель. Кажется, auth не сохраняется. Если я делаю dd(Auth::user())
или даже просто Auth::check()
он возвращает null.
Вот маршрут:
Route::group(['middleware' => ['web']], function () { Route::get('test',function(){ dd(Auth::user()); //returns null echo Auth::user()->name; // returns Trying to get property of non-object }); });
Что я делаю не так?
Странная вещь в том, что вчера вечером она работала. Это просто волшебным образом перестало работать.
Просто добавьте промежуточное ПО «auth» к вашему «тестовому» маршруту и попробуйте получить доступ к нему во время входа в систему. Он не должен давать вам никаких ошибок таким образом. Если вы попытаетесь получить к нему доступ без входа в систему, он должен перенаправить вас на любой маршрут, определенный в промежуточном программном обеспечении «auth».
Используя промежуточное ПО «auth», вы в основном гарантируете, что Auth :: user () всегда вернет правильный экземпляр пользователя.
Теперь, если это работает, вы можете быть уверены, что Laravel Auth действительно остается пользователем, и проблема находится где-то еще в вашем коде.
Я не заметил никаких проблем с классом Auth в Laravel.
Решение этого не является очевидным, особенно из старых версий laravel.
Благодаря этой ссылке. Аутентичная сессия убита в Ларавеле 5.2
Я смог его решить, поэтому я отправлю ответ, чтобы помочь другим, кто сталкивается с той же проблемой.
Изначально у меня это было только на моих маршрутах.
Route::post('app/login', 'Auth\AuthController@doLogin'); Route::group(['middleware' => ['web','auth']], function () { Route::get('test',function(){ dd(Auth::user());// was always returning null }); });
Но, чтобы заставить логин сохраняться, я должен был это сделать
Route::group(['middleware' =>[ 'web']], function () { Route::post('app/login', 'Auth\AuthController@doLogin'); }); Route::group(['middleware' => ['web','auth']], function () { Route::get('test',function(){ echo Auth::user()->name; }); });
По-видимому, любой маршрут, который собирается позвонить или зарегистрировать сеанс, должен использовать промежуточное ПО «web».