2016-06-26 4 views
0

Я пытаюсь получить вошедшего в систему пользователя из моего пользовательского промежуточного слоя, как это:Как получить текущего зарегистрированного пользователя в промежуточном программном обеспечении laravel?

$user_id = Auth::user()->getKey(); 

, но я получаю эту ошибку:

Trying to get property of non-object 

любую идею?

+0

Он может вернуться 'null', когда вы не вошли в систему – tkausl

+0

Да, он возвращает null, но я вошел в систему. –

ответ

0

Вы должны называть столбец Имя вашей таблицы пользователей;

Auth::user()->ColumnNameInYourUsersTable; 

Вы также можете сделать auth()->user()->ColumnNameInYourUsersTable;

Убедитесь, что Вы Illuminate\Support\Facades\Auth; сверху.

- EDIT -

Если вы используете другую охрану сделать это как этот

auth()->guard('guardname')->user()->ColumnNameInYourUsersTable;

+0

Я пробовал, но 'Auth :: user()' return null? –

+0

Он будет возвращать только null, если вы используете другой охранник или вы вообще не вошли в систему. – jen

+0

Объяснение для downvote пожалуйста – jen

-1

Вы должны проверить, если пользователь вошел в первую.

if (Auth::check()) { 
    $user_id = Auth::user()->getKey(); 
} 

Или если вы просто хотите, идентификатор пользователя, вы можете просто сделать

$user_id = Auth::id(); 

проверка не нужен здесь, потому что Laravel будет делать это для вас

+0

Я попробовал, но он вернулся null –

-1

Для получения пользователя сделать это:

$user = Auth::user(); 

Убедитесь, что вы используете Illuminate\Support\Facades\Auth; наверху.

и для получения значения столбца используйте:

Auth::user()->yourColumnName; 

Альтернатива: Если она возвращается NULL, то это решение будет работать. Фактически маршруты, которые используют сеансы, должны быть в web middleware group. Это изменение Laravel 5,2

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

и вы также можете переместить веб промежуточного слоя группы глобальных здесь промежуточное программное app/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

Пробовал, но не дошел до промежуточного ПО? –

+0

https: // laracasts.com/обсудить/channels/laravel/authuser-return-null-on-laravel-52 Попробовать этого приятеля –

+0

ответить обновленный посмотреть @ MohammadAL-Raoosh –

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