Laravel: Auth::user()->id probeert een eigenschap van een niet-object te krijgen

Ik krijg de volgende foutmelding “probeert een eigenschap van een niet-object te krijgen” wanneer ik een formulier verzend om een ​​gebruiker toe te voegen, de fout staat blijkbaar op de eerste regel: Auth::user()-> id van het volgende:

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

Enig idee? Ik heb een tijdje gezocht en alles wat ik zie zegt dat dit goed zou moeten werken. Mijn gebruiker is ingelogd met de Sentry 2 authenticatiebundel.


Antwoord 1, autoriteit 100%

Nu met laravel 4.2 is het gemakkelijk om de gebruikers-ID te krijgen:

$userId = Auth::id();

dat is alles.

Maar om andere gebruikersgegevens dan id op te halen, gebruikt u:

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

Voor meer details, bekijk het beveiligingsgedeelte van de documentatie


Antwoord 2, autoriteit 81%

Als je Sentrygebruikt, controleer dan de ingelogde gebruiker met Sentry::getUser()->id. De fout die je krijgt is dat de Auth::user()NULL retourneert en het probeert een id van NULL te krijgen, vandaar de fout trying to get a property from a non-object.


Antwoord 3, autoriteit 57%

Voer eerst een Auth::check() uit om er zeker van te zijn dat u goed bent ingelogd :

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

Antwoord 4, autoriteit 25%

id is protected, voeg gewoon een openbare methode toe aan uw /models/User.php

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

zodat je het kunt noemen

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

onthoud altijd om te testen of de gebruiker is ingelogd…

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

Antwoord 5, autoriteit 15%

In Laravel 5.6 gebruik ik

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

zoals de andere suggestie

Auth::id()

lijkt van toepassing te zijn op oudere versies van Laravel 5.x en werkte niet voor mij.


Antwoord 6, autoriteit 14%

In Laravel 8.6 werkt het volgende voor mij in een controller:

$id = auth()->user()->id;

Antwoord 7, autoriteit 12%

Vergeet nooit middleware-authenticatie op te nemen en te gebruiken:

use Illuminate\Http\Request;   

Zoek vervolgens de id met de aanvraagmethode:

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

Antwoord 8, autoriteit 10%

Controleer uw routevoor de functie waarin u Auth::user()gebruikt. Voor het verkrijgen van Auth::user()-gegevens moet de functie binnen webmiddleware Route::group(['middleware' => 'web'], function () {});.


Antwoord 9, autoriteit 10%

U heeft toegang tot de geverifieerde gebruiker via de Auth-façade:

use Illuminate\Support\Facades\Auth;
// Get the currently authenticated user...
$user = Auth::user();
// Get the currently authenticated user's ID...
$id = Auth::id();

Antwoord 10, autoriteit 8%

Als iemand op zoek is naar laravel 5 >

Auth::id() 

geef id van de geautoriseerde gebruiker


Antwoord 11, autoriteit 7%

gebruik Illuminate\Support\Facades\Auth;

In de klas:

protected $user;

Deze code werkt voor mij

In opbouw:

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

enz..


Antwoord 12, autoriteit 6%

u moet controleren of de gebruiker is ingelogd ?

Auth::check() ? Auth::user()->id : null

Antwoord 13, autoriteit 5%

Het werkt met mij:

echo Auth::guard('guard_name')->user()->id;

Antwoord 14, autoriteit 3%

Uw vraag en codevoorbeeld zijn een beetje vaag, en ik denk dat de andere ontwikkelaars zich op het verkeerde concentreren. Ik maak een applicatie in Laravel, heb online tutorials gebruikt voor het maken van een nieuwe gebruiker en authenticatie, en leek te hebben opgemerkt dat wanneer je een nieuwe gebruiker aanmaakt in Laravel, er geen Auth-object wordt gemaakt – dat je gebruikt om de (nieuwe) ID van de ingelogde gebruiker in de rest van de applicatie. Dit is een probleem, en ik geloof wat u misschien vraagt. Ik deed dit soort onhandige hack in 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);

Zou niet moeten maken en verifiëren, maar ik wist niet wat ik anders moest doen.


Antwoord 15, autoriteit 3%

De eerste check gebruiker ingelogd en dan

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

Antwoord 16, autoriteit 3%

Voor Laravel 6.X kun je het volgende doen:

$user = Auth::guard(<GUARD_NAME>)->user();
$user_id = $user->id;
$full_name = $user->full_name;

Antwoord 17, autoriteit 3%

if(Auth::check() && Auth::user()->role->id == 2){ 
         $tags = Tag::latest()->get();
        return view('admin.tag.index',compact('tags'));
    }

Antwoord 18, autoriteit 3%

Laravel 8-oplossing:

use Illuminate\Support\Facades\Auth;
// Get the currently authenticated user...
$user = Auth::user();
// Get the currently authenticated user's ID...
$id = Auth::id();

Voor meer details, bekijk hier

de nieuwste documenten


Antwoord 19

Je kunt proberen:

$id = \Auth::user()->id

Antwoord 20

Je kunt dit proberen voor laravel 7:

{{ Auth::user()->name  }}

Other episodes