it-swarm.com.de

Laravel: Auth :: user () -> id versucht, eine Eigenschaft eines Nichtobjekts abzurufen

Ich erhalte den folgenden Fehler "Beim Versuch, eine Eigenschaft eines Nicht-Objekts abzurufen", wenn ich ein Formular zum Hinzufügen eines Benutzers übermittle. Der Fehler befindet sich anscheinend in der ersten Zeile: Auth :: user () -> id der folgenden :

$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);

Irgendwelche Ideen? Ich habe eine Weile gesucht und alles was ich sehe besagt, dass dies gut funktionieren sollte. Mein Benutzer ist mit dem Sentry 2-Authentifizierungspaket angemeldet.

49
Josh

Wenn Sie Sentry verwenden, überprüfen Sie den angemeldeten Benutzer mit Sentry::getUser()->id. Der Fehler, den Sie erhalten, ist, dass Auth::user() NULL zurückgibt und versucht, eine ID von NULL zu erhalten, daher der Fehler trying to get a property from a non-object

43
Altrim

Machen Sie vorher ein Auth :: check (), um sicherzustellen, dass Sie gut eingeloggt sind:

if (Auth::check())
{
    // The user is logged in...
}
39
jody_lognoul

Mit laravel 4.2 ist es jetzt leicht, die Benutzer-ID zu erhalten:

$userId = Auth::id();

das ist alles.

Um andere Benutzerdaten als id abzurufen, verwenden Sie:

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

Weitere Informationen finden Sie unter Sicherheitsteil der Dokumentation

39
Dr. MAF

id ist protected, fügen Sie einfach eine öffentliche Methode in Ihren /models/User.php ein.

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

so kannst du es nennen

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

denken Sie immer daran zu testen, ob der Benutzer angemeldet ist ...

if (Auth::check())
{
     $id = Auth::user()->getId();
}
16
maztch

In Laravel 5.6 verwende ich

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

wie der andere Vorschlag

Auth::id()

scheint auf ältere Versionen von Laravel 5.x zuzutreffen und funktionierte nicht für mich.

4

Überprüfen Sie Ihre route für die Funktion, in der Sie Auth::user() verwenden. Um Auth :: user () -Daten zu erhalten, sollte die Funktion in web Middleware Route::group(['middleware' => 'web'], function () {}); enthalten sein. 

4
Ashwani Panwar

verwenden Sie Illuminate\Support\Facades\Auth;

Im Unterricht:

protected $user;

Dieser Code funktioniert für mich

Im Konstrukt:

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

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

usw.. 

3
l3okor

Ihre Frage und Ihr Codebeispiel sind etwas vage, und ich glaube, die anderen Entwickler konzentrieren sich auf das Falsche. Ich mache eine Anwendung in Laravel, habe Online-Lernprogramme zum Erstellen eines neuen Benutzers und zur Authentifizierung verwendet und habe bemerkt, dass beim Erstellen eines neuen Benutzers in Laravel kein Auth-Objekt erstellt wird. ID des angemeldeten Benutzers im Rest der Anwendung. Dies ist ein Problem, und ich glaube, was Sie fragen. Ich habe diese Art von verrücktem Hack in userController :: store gemacht: 

$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);

Sollte nicht erstellt und authentifiziert werden müssen, aber ich wusste nicht, was ich sonst tun sollte.

1
Andrew Koper

Wenn jemand nach Laravel sucht 5>

 Auth::id() 

iD des berechtigten Benutzers angeben

1

Vergessen Sie nie, Folgendes hinzuzufügen:

use Illuminate\Http\Request;   

Dann finden Sie die ID mithilfe der Anforderungsmethode:

$id= $request->user()->id;
0
rashedcs

Der erste Benutzer der Prüfung hat sich angemeldet und dann

if (Auth::check()){
    //get id of logged in user
    {{ Auth::getUser()->id}}

    //get the name of logged in user
    {{ Auth::getUser()->name }}
}
0
Abid Shah

sie müssen überprüfen, ob der Benutzer angemeldet ist.

Auth::check() ? Auth::user()->id : null
0
Vahid Alvandi