Laravel:Auth :: user() - > id试图获取非对象的属性

Jos*_*osh 68 php authentication laravel laravel-4

当我提交表单添加用户时,我收到以下错误"试图获取非对象的属性",错误显然在第一行:Auth :: user() - >以下的id :

$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);
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?我已经搜索了一段时间,我看到的一切都说这应该可以正常工作.我的用户使用Sentry 2身份验证包登录.

Dr.*_*MAF 57

现在使用laravel 4.2很容易获得用户的id:

$userId = Auth::id();
Run Code Online (Sandbox Code Playgroud)

就这些.

但要检索除id之外的用户数据,您可以使用:

$email = Auth::user()->email;
Run Code Online (Sandbox Code Playgroud)

有关更多详细信息,请查看文档的安全性部分


Alt*_*rim 54

如果您正在使用,Sentry请检查登录用户Sentry::getUser()->id.你得到的错误是Auth::user()返回NULL并尝试从NULL获取id因此错误trying to get a property from a non-object.

  • 我更喜欢使用方法链 {{auth()->user()->name}} (3认同)

小智 41

之前做一个Auth :: check()以确保您已登录:

if (Auth::check())
{
    // The user is logged in...
}
Run Code Online (Sandbox Code Playgroud)

  • 这是正确的 - 如果用户是loggin,首先必须使用Auth :: check().然后Auth :: getUser()将有一个有用的对象:) (3认同)

maz*_*tch 18

id是protected,只需添加一个公共方法/models/User.php

public function getId()
{
  return $this->id;
}
Run Code Online (Sandbox Code Playgroud)

所以你可以打电话给它

$id = Auth::user()->getId();
Run Code Online (Sandbox Code Playgroud)

记得总是测试用户是否被记录...

if (Auth::check())
{
     $id = Auth::user()->getId();
}
Run Code Online (Sandbox Code Playgroud)

  • 或者使用Auth :: id() (4认同)
  • 在我的情况下,只有这个答案有效.Auth:id()返回null. (2认同)

fra*_*vel 9

在Laravel 5.6中,我使用

use Auth;
$user_id = Auth::user()->id;
Run Code Online (Sandbox Code Playgroud)

作为另一个建议

Auth::id()
Run Code Online (Sandbox Code Playgroud)

似乎适用于Laravel 5.x的旧版本,但不适用于我。


小智 8

您可以通过 Auth 门面访问经过身份验证的用户:

use Illuminate\Support\Facades\Auth;

// Get the currently authenticated user...
$user = Auth::user();

// Get the currently authenticated user's ID...
$id = Auth::id();
Run Code Online (Sandbox Code Playgroud)


use*_*100 8

在 Laravel 8.6 中,以下在控制器中对我有用:

$id = auth()->user()->id;
Run Code Online (Sandbox Code Playgroud)


Ash*_*war 7

检查您route正在使用的功能Auth::user(),要获取Auth :: user()数据,该功能应位于webMiddleware 内部Route::group(['middleware' => 'web'], function () {});


Md *_*lam 7

如果有人正在寻找 Laravel 5 >

 Auth::id() 
Run Code Online (Sandbox Code Playgroud)

给出授权用户的id


小智 6

使用 Illuminate\Support\Facades\Auth;

在班上:

protected $user;
Run Code Online (Sandbox Code Playgroud)

这段代码对我有用

在构造中:

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

In function:
$this->user->id;
$this->user->email;
Run Code Online (Sandbox Code Playgroud)

ETC..


ras*_*dcs 6

永远不要忘记包括:

use Illuminate\Http\Request;   
Run Code Online (Sandbox Code Playgroud)

然后使用请求方法找到ID:

$id= $request->user()->id;
Run Code Online (Sandbox Code Playgroud)


小智 5

您必须检查用户是否已登录?

Auth::check() ? Auth::user()->id : null
Run Code Online (Sandbox Code Playgroud)