Estou recebendo o seguinte erro "tentando obter uma propriedade de um não-objeto" quando envio um formulário para adicionar um usuário, o erro está aparentemente na primeira linha: Auth :: user () -> id do seguinte :
$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);
Alguma ideia? Eu procurei por um tempo e tudo que vejo diz que isso deve funcionar bem. Meu usuário está logado usando o pacote de autenticação Sentry 2.
Auth::user();
? o Auth :: user () retorna o usuário conectado no momento, então você está tentando registrar um usuário que deveria estar logado, não faz sentidoSentry::getUser()->id
. O erro que você obtém é queAuth::user()
retorna NULL e tenta obter id de NULL, portanto, o errotrying to get a property from a non-object
.Respostas:
Se você estiver usando,
Sentry
verifique o usuário conectado comSentry::getUser()->id
. O erro que você obtém é queAuth::user()
retorna NULL e tenta obter id de NULL, portanto, o errotrying to get a property from a non-object
.fonte
Agora, com laravel 4.2, é fácil obter a id do usuário:
isso é tudo.
Mas para recuperar os dados do usuário diferentes de id, você usa:
Para mais detalhes, verifique a parte de segurança da documentação
fonte
Faça um Auth :: check () antes de se certificar de que você está bem logado:
if (Auth::check()) { // The user is logged in... }
fonte
@if(Auth::check()) {{Auth::user()->id}} @endif
(isso é útil se você deseja obter o ID do usuário para javascript / ajax)id é
protected
, basta adicionar um método público em seu/models/User.php
public function getId() { return $this->id; }
então você pode chamá-lo
lembre-se sempre de testar se o usuário está logado ...
if (Auth::check()) { $id = Auth::user()->getId(); }
fonte
No Laravel 5.6 eu uso
use Auth; $user_id = Auth::user()->id;
como a outra sugestão
parece se aplicar a versões mais antigas do Laravel 5.xe não funcionou para mim.
fonte
Auth::id()
está funcionando bem na versão 5.7 do laravel.Verifique
route
a função na qual está usandoAuth::user()
. Para obter os dados Auth :: user (), a função deve estar dentro doweb
middlewareRoute::group(['middleware' => 'web'], function () {});
.fonte
Nunca se esqueça de incluir e tentar usar autenticação de middleware:
use Illuminate\Http\Request;
Em seguida, encontre o id usando o método de solicitação:
fonte
use Illuminate \ Support \ Facades \ Auth;
Em aula:
protected $user;
Este código funciona para mim
Em construção:
$this->user = User::find(Auth::user()->id); In function: $this->user->id; $this->user->email;
etc ..
fonte
Se alguém está procurando laravel 5>
dar id do usuário autorizado
fonte
Você pode acessar o usuário autenticado por meio da fachada do Auth:
use Illuminate\Support\Facades\Auth; // Get the currently authenticated user... $user = Auth::user(); // Get the currently authenticated user's ID... $id = Auth::id();
fonte
você deve verificar se o usuário está logado?
Auth::check() ? Auth::user()->id : null
fonte
Sua pergunta e amostra de código são um pouco vagas e acredito que os outros desenvolvedores estão se concentrando na coisa errada. Estou fazendo um aplicativo no Laravel, usei tutoriais online para criar um novo usuário e autenticação, e parecia ter notado que quando você cria um novo usuário no Laravel, nenhum objeto Auth é criado - que você usa para obter o (novo) ID do usuário conectado no restante do aplicativo. Isso é um problema e acredito no que você pode estar perguntando. Eu fiz esse tipo de hack barulhento em 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);
Não deveria ter que criar e autenticar, mas eu não sabia mais o que fazer.
fonte
O primeiro usuário de verificação fez login e depois
if (Auth::check()){ //get id of logged in user {{ Auth::getUser()->id}} //get the name of logged in user {{ Auth::getUser()->name }} }
fonte
Para o Laravel 6.X você pode fazer o seguinte:
fonte
No Laravel 8.6, o seguinte funciona para mim em um controlador:
fonte
Podes tentar :
fonte
if(Auth::check() && Auth::user()->role->id == 2){ $tags = Tag::latest()->get(); return view('admin.tag.index',compact('tags')); }
fonte
Está trabalhando comigo:
echo Auth::guard('guard_name')->user()->id;
fonte