2015-12-29 3 views
4

Я просто обновляю композитор до Laravel 5.2 и не могу просматривать страницы, защищенные паролем. В основном ниже строки кода не работает.auth() -> user() имеет значение null в Laravel 5.2

auth()->user() 

Может кто-нибудь предположить, почему это не работает?

+0

ли обновить вас файл конфигурации конфигурации/auth.php с следующее: https://github.com/laravel/laravel/blob/develop/config/auth.php? –

+0

Да, Единственное изменение: '' model '=> App \ Models \ User \ User_Model :: class, 'вместо' model' => App \ User :: class, ' –

+0

Что делает' попытка() '(или 'login()' или все, что вы используете) возвращаются при попытке аутентификации пользователя? – Bogdan

ответ

12

Убедитесь, что маршруты, требующие сеансов (которые используются Auth), находятся за пределами группы 'web'.

Route::group(['middleware' => 'web'], function() { 
    // your routes 
}); 

Это изменение, которое является новым для 5.2. По умолчанию в маршрутах нет этого промежуточного стека. Группа промежуточного программного обеспечения сети устанавливает хранилище сеансов, файлы cookie и защиту csrf.

+0

Отличный ответ. Я обновил до 5.2, и мои контроллеры пакетов внезапно не смогли найти аутентифицированного пользователя. –

4

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

Я решил эту проблему в приложения/Http/Kernel.php перемещения веба промежуточных групп глобальных промежуточных программный.

protected $middleware = [ 
    \Illuminate\Foundation\Http\Middleware\CheckForMaintenanceMode::class, 
    \App\Http\Middleware\EncryptCookies::class, 
    \Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class, 
    \Illuminate\Session\Middleware\StartSession::class, 
    \Illuminate\View\Middleware\ShareErrorsFromSession::class, 
    \App\Http\Middleware\VerifyCsrfToken::class 
]; 
+0

У меня такая же проблема в 5.3.6, и ваше предложение решило мою проблему. Спасибо. +1 – Pankaj

0

Возможно, это поможет кому-то еще. Но не забывайте узнать, что вы используете guard. Например, для администраторов вы можете не защищать по умолчанию, а создавать свои собственные. Не забывайте об этом. Вызов \Auth::guard($guard)->user()

0

Для тех, кто не хочет слепо добавить межплатформенный к маршрутам, вам просто нужно добавить классы, которые управляют куки & сеанса в соответствующую группу промежуточного слоя (api в моем случае). Для меня те классы, где:

\App\Http\Middleware\EncryptCookies::class, 
\Illuminate\Session\Middleware\StartSession::class, 

Это как моя App\Http\Kernel::$middleWare переменная кончались ищет:

protected $middlewareGroups = [ 
    'web' => [ 
     ... 
    ], 

    'api' => [ 
     'throttle:60,1', 
     \App\Http\Middleware\EncryptCookies::class, 
     \Illuminate\Session\Middleware\StartSession::class, 
     \Illuminate\Routing\Middleware\SubstituteBindings::class, 
     \Illuminate\Auth\Middleware\Authenticate::class 
    ], 
]; 

Использование Laravel 5.3

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

  • Нет связанных вопросов^_^