J'obtiens l'erreur suivante "essayer d'obtenir une propriété d'un non-objet" lorsque je soumets un formulaire pour ajouter un utilisateur, l'erreur est apparemment sur la première ligne: Auth :: user () -> id de ce qui suit :
$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);
Des idées? J'ai cherché pendant un moment et tout ce que je vois dit que cela devrait fonctionner correctement. Mon utilisateur est connecté à l'aide du kit d'authentification Sentry 2.
Auth::user();
? Auth :: user () renvoie l'utilisateur actuellement connecté, donc vous essayez d'enregistrer un utilisateur qui devrait être connecté, cela n'a pas de sensSentry::getUser()->id
. L'erreur que vous obtenez est que leAuth::user()
retourne NULL et qu'il essaie d'obtenir l'id de NULL d'où l'erreurtrying to get a property from a non-object
.Réponses:
Si vous utilisez,
Sentry
vérifiez l'utilisateur connecté avecSentry::getUser()->id
. L'erreur que vous obtenez est que leAuth::user()
retourne NULL et qu'il essaie d'obtenir l'id de NULL d'où l'erreurtrying to get a property from a non-object
.la source
Maintenant, avec laravel 4.2, il est facile d'obtenir l'identifiant de l'utilisateur:
c'est tout.
Mais pour récupérer les données de l'utilisateur autres que l'identifiant, vous utilisez:
Pour plus de détails, consultez la partie sécurité de la documentation
la source
Faites un Auth :: check () avant de vous assurer que vous êtes bien connecté:
if (Auth::check()) { // The user is logged in... }
la source
@if(Auth::check()) {{Auth::user()->id}} @endif
(cela est utile si vous voulez obtenir l'ID utilisateur pour javascript / ajax)id est
protected
, ajoutez simplement une méthode publique dans votre/models/User.php
public function getId() { return $this->id; }
donc tu peux l'appeler
rappelez-vous toujours de tester si l'utilisateur est connecté ...
if (Auth::check()) { $id = Auth::user()->getId(); }
la source
Dans Laravel 5.6 j'utilise
use Auth; $user_id = Auth::user()->id;
comme l'autre suggestion
semble s'appliquer aux anciennes versions de Laravel 5.x et n'a pas fonctionné pour moi.
la source
Auth::id()
fonctionne très bien dans la version laravel 5.7.Vérifiez
route
la fonction dans laquelle vous utilisezAuth::user()
. Pour obtenir les données Auth :: user (), la fonction doit être à l'intérieur duweb
middlewareRoute::group(['middleware' => 'web'], function () {});
.la source
N'oubliez jamais d'inclure et d'essayer d'utiliser l'authentification middleware:
use Illuminate\Http\Request;
Recherchez ensuite l'ID en utilisant la méthode de requête:
la source
utilisez Illuminate \ Support \ Facades \ Auth;
En classe:
protected $user;
Ce code fonctionne pour moi
En construction:
$this->user = User::find(Auth::user()->id); In function: $this->user->id; $this->user->email;
etc..
la source
Si quelqu'un cherche laravel 5>
donner l'identifiant de l'utilisateur autorisé
la source
Vous pouvez accéder à l'utilisateur authentifié via la façade Auth:
use Illuminate\Support\Facades\Auth; // Get the currently authenticated user... $user = Auth::user(); // Get the currently authenticated user's ID... $id = Auth::id();
la source
vous devez vérifier si l'utilisateur est connecté?
Auth::check() ? Auth::user()->id : null
la source
Votre question et votre exemple de code sont un peu vagues, et je pense que les autres développeurs se concentrent sur la mauvaise chose. Je crée une application dans Laravel, j'ai utilisé des tutoriels en ligne pour créer un nouvel utilisateur et une authentification, et j'ai semblé avoir remarqué que lorsque vous créez un nouvel utilisateur dans Laravel, aucun objet Auth n'est créé - que vous utilisez pour obtenir le (nouveau) ID de l'utilisateur connecté dans le reste de l'application. C'est un problème, et je crois ce que vous demandez peut-être. J'ai fait ce genre de hack cludgy dans 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);
Je ne devrais pas avoir à créer et authentifier, mais je ne savais pas quoi faire d'autre.
la source
Le premier utilisateur de vérification s'est connecté, puis
if (Auth::check()){ //get id of logged in user {{ Auth::getUser()->id}} //get the name of logged in user {{ Auth::getUser()->name }} }
la source
Pour Laravel 6.X, vous pouvez effectuer les opérations suivantes:
la source
Dans Laravel 8.6, ce qui suit fonctionne pour moi dans un contrôleur:
la source
Tu peux essayer :
la source
if(Auth::check() && Auth::user()->role->id == 2){ $tags = Tag::latest()->get(); return view('admin.tag.index',compact('tags')); }
la source
Cela fonctionne avec moi:
echo Auth::guard('guard_name')->user()->id;
la source