Laravel:Auth::user()->идентификатор, пытающийся получить свойство не-объекта


Я получаю следующую ошибку "пытаюсь получить свойство не-объекта", когда я отправляю форму для добавления пользователя, ошибка, по-видимому, находится в первой строке: Auth::user()->идентификатор следующего:

$id = Auth::user()->id;
$currentuser = User::find($id);
$usergroup = $currentuser->user_group;
$group = Sentry::getGroupProvider()->findById($usergroup);

$generatedPassword = $this->_generatePassword(8,8);
$user = Sentry::register(array('email' => $input['email'], 'password' => $generatedPassword, 'user_group' => $usergroup));

$user->addGroup($group);

Есть идеи? Я искал некоторое время, и все, что я вижу, говорит о том, что это должно работать нормально. Мой пользователь вошел в систему с помощью пакета аутентификации Sentry 2.

Author: Cœur, 2013-07-24

9 answers

Если вы используете Sentry, проверьте вошедшего в систему пользователя с помощью Sentry::getUser()->id. Ошибка, которую вы получаете, заключается в том, что Auth::user() возвращает NULL и пытается получить идентификатор из NULL, следовательно, ошибка trying to get a property from a non-object.

 42
Author: Altrim, 2013-07-24 14:08:18

Выполните проверку подлинности::проверьте(), прежде чем убедиться, что вы правильно вошли в систему:

if (Auth::check())
{
    // The user is logged in...
}
 39
Author: jody_lognoul, 2018-07-10 09:48:51

Теперь с laravel 4.2 легко получить идентификатор пользователя:

$userId = Auth::id();

Вот и все.

Но для получения данных пользователя, отличных от идентификатора, вы используете:

$email = Auth::user()->email;

Для получения более подробной информации проверьте часть документации, посвященную безопасности

 33
Author: Dr. MAF, 2018-08-02 07:57:59

Идентификатор protected, просто добавьте общедоступный метод в свой /models/User.php

public function getId()
{
  return $this->id;
}

Так что вы можете назвать это

$id = Auth::user()->getId();

Всегда помните, чтобы проверить, зарегистрирован ли пользователь...

if (Auth::check())
{
     $id = Auth::user()->getId();
}
 14
Author: maztch, 2014-04-22 10:15:00

Проверьте route на наличие функции, в которой вы используете Auth::user(), Для получения данных Auth::user() функция должна находиться внутри web промежуточного программного обеспечения Route::group(['middleware' => 'web'], function () {});.

 4
Author: Ashwani Panwar, 2016-05-05 11:35:15

Использовать Подсветку\Поддержку\Фасадов\Авторизация;

В классе:

protected $user;

Этот код работает для меня

В конструкции:

$this->user = User::find(Auth::user()->id);

In function:
$this->user->id;
$this->user->email;

И т.д.

 3
Author: l3okor, 2017-03-31 10:09:45

Ваш вопрос и пример кода немного расплывчаты, и я считаю, что другие разработчики сосредотачиваются не на том. Я создаю приложение в Laravel, использовал онлайн-учебники для создания нового пользователя и аутентификации и, похоже, заметил, что при создании нового пользователя в Laravel не создается объект аутентификации, который вы используете для получения (нового) идентификатора пользователя, вошедшего в систему, в остальной части приложения. Это проблема, и я верю в то, о чем вы, возможно, спрашиваете. Я сделал такой вид о неуклюжем взломе в UserController::store:

$user->save();

Session::flash('message','Successfully created user!');

//KLUDGE!! rest of site depends on user id in auth object - need to force/create it here
Auth::attempt(array('email' => Input::get('email'), 'password' => Input::get('password')), true);

Redirect::to('users/' . Auth::user()->id);

Не нужно было создавать и аутентифицировать, но я не знал, что еще можно сделать.

 1
Author: Andrew Koper, 2017-12-20 15:52:16

Если кто-то ищет laravel 5>

 Auth::id() 

Укажите идентификатор авторизованного пользователя

 1
Author: Md Sifatul Islam, 2018-08-01 01:44:43

В Laravel 5.6 я использую

use Auth;
$user_id = Auth::user()->id;

В качестве другого предложения

Auth::id()

Похоже, применимо к более старым версиям Laravel 5.x и не работало для меня.

 1
Author: frankfurt-laravel, 2018-08-06 20:11:28