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

问题描述 投票:69回答:13

我提交表单以添加用户时收到以下错误“试图获取非对象的属性”,该错误显然在第一行: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);

有什么想法吗?我搜索了一段时间,看到的所有内容都说应该可以正常工作。我的用户使用Sentry 2身份验证捆绑软件登录。

php authentication laravel laravel-4
13个回答
54
投票

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


2
投票

您的问题和代码示例有点含糊,我相信其他开发人员会将重点放在错误的事情上。我正在Laravel中创建一个应用程序,使用了在线教程来创建新用户和身份验证,并且似乎已经注意到,当您在Laravel中创建新用户时,不会创建Auth对象-您用来获取(new)应用程序其余部分中的已登录用户的ID。这是一个问题,我相信您可能会问。我在userController :: store:


2
投票

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


2
投票

首先登录的支票用户然后登录


0
投票

对于Laravel 6.X,您可以执行以下操作:


57
投票

现在有了laravel 4.2,很容易获得用户ID:

$userId = Auth::id();

就是全部。

但是要检索除id以外的用户数据,请使用:

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

有关更多详细信息,请检查security part of the documentation


41
投票

进行Auth :: check()之前,请确保您已正确登录:

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

18
投票

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

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

所以可以叫它

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

请记住始终测试用户是否已登录...

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

9
投票

在Laravel 5.6中,我使用


7
投票

检查route中是否使用了Auth::user()的函数,要获取Auth :: user()数据,该函数应位于web中间件Route::group(['middleware' => 'web'], function () {});中。


6
投票

永远不要忘记包含:


4
投票

使用照亮\支持\外观\验证;


3
投票

如果有人在寻找laravel 5>

© www.soinside.com 2019 - 2024. All rights reserved.