Ich erhalte die folgende Fehlermeldung "Ich versuche, eine Eigenschaft eines Nicht-Objekts abzurufen", wenn ich ein Formular zum Hinzufügen eines Benutzers sende. 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, sagt, dass dies gut funktionieren sollte. Mein Benutzer ist mit dem Sentry 2-Authentifizierungspaket angemeldet.
Auth::user();
? Der Auth :: user () gibt den aktuell angemeldeten Benutzer zurück.Sentry::getUser()->id
. Der Fehler, den Sie erhalten, ist, dass derAuth::user()
Wert NULL zurückgibt und versucht, die ID von NULL abzurufen, daher der Fehlertrying to get a property from a non-object
.Antworten:
Wenn Sie verwenden,
Sentry
überprüfen Sie den angemeldeten Benutzer mitSentry::getUser()->id
. Der Fehler, den Sie erhalten, ist, dass derAuth::user()
Wert NULL zurückgibt und versucht, die ID von NULL abzurufen, daher der Fehlertrying to get a property from a non-object
.quelle
Mit Laravel 4.2 ist es jetzt einfach, die Benutzer-ID abzurufen:
das ist alles.
Um jedoch andere Benutzerdaten als die ID abzurufen, verwenden Sie:
Weitere Informationen finden Sie im Sicherheitsteil der Dokumentation
quelle
Führen Sie vorher ein Auth :: check () durch, um sicherzustellen, dass Sie gut angemeldet sind:
if (Auth::check()) { // The user is logged in... }
quelle
@if(Auth::check()) {{Auth::user()->id}} @endif
(Dies ist nützlich, wenn Sie die Benutzer-ID für Javascript / Ajax erhalten möchten.)ID ist
protected
, fügen Sie einfach eine öffentliche Methode in Ihre/models/User.php
public function getId() { return $this->id; }
so kannst du es nennen
Denken Sie immer daran, zu testen, ob der Benutzer angemeldet ist ...
if (Auth::check()) { $id = Auth::user()->getId(); }
quelle
In Laravel 5.6 verwende ich
use Auth; $user_id = Auth::user()->id;
als der andere Vorschlag
scheint auf ältere Versionen von Laravel 5.x zuzutreffen und hat bei mir nicht funktioniert.
quelle
Auth::id()
funktioniert gut in Laravel 5.7 Version.Überprüfen Sie Ihre
route
Funktion auf die Funktion, die Sie verwendenAuth::user()
. Um Auth :: user () -Daten abzurufen, sollte sich die Funktion in derweb
Middleware befindenRoute::group(['middleware' => 'web'], function () {});
.quelle
Vergessen Sie niemals, Middleware-Authentifizierung einzuschließen und zu verwenden:
use Illuminate\Http\Request;
Suchen Sie dann die ID mithilfe der Anforderungsmethode:
quelle
Verwenden Sie Illuminate \ Support \ Facades \ Auth.
Im Unterricht:
protected $user;
Dieser Code funktioniert bei mir
Im Konstrukt:
$this->user = User::find(Auth::user()->id); In function: $this->user->id; $this->user->email;
etc..
quelle
Wenn jemand nach Laravel 5> sucht
Geben Sie die ID des autorisierten Benutzers an
quelle
Sie können über die Auth-Fassade auf den authentifizierten Benutzer zugreifen:
use Illuminate\Support\Facades\Auth; // Get the currently authenticated user... $user = Auth::user(); // Get the currently authenticated user's ID... $id = Auth::id();
quelle
Sie müssen überprüfen, ob der Benutzer angemeldet ist.
Auth::check() ? Auth::user()->id : null
quelle
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-Tutorials zum Erstellen eines neuen Benutzers und zur Authentifizierung verwendet und anscheinend bemerkt, dass beim Erstellen eines neuen Benutzers in Laravel kein Auth-Objekt erstellt wird - mit dem Sie das (neue) Die ID des angemeldeten Benutzers im Rest der Anwendung. Dies ist ein Problem, und ich glaube, was Sie fragen. Ich habe diese Art von ungeschicktem 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 erstellen und authentifizieren müssen, aber ich wusste nicht, was ich sonst tun sollte.
quelle
Der erste Check-Benutzer 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 }} }
quelle
Für Laravel 6.X können Sie Folgendes tun:
quelle
Du kannst es versuchen :
quelle
if(Auth::check() && Auth::user()->role->id == 2){ $tags = Tag::latest()->get(); return view('admin.tag.index',compact('tags')); }
quelle
Es funktioniert mit mir:
echo Auth::guard('guard_name')->user()->id;
quelle
In Laravel 8.6 funktioniert für mich in einem Controller Folgendes:
quelle