我提交表单以添加用户时收到以下错误“试图获取非对象的属性”,该错误显然在第一行: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身份验证捆绑软件登录。
如果使用Sentry
,请使用Sentry::getUser()->id
检查登录的用户。您得到的错误是Auth::user()
返回NULL,并且它试图从NULL获取ID,因此错误trying to get a property from a non-object
。
您的问题和代码示例有点含糊,我相信其他开发人员会将重点放在错误的事情上。我正在Laravel中创建一个应用程序,使用了在线教程来创建新用户和身份验证,并且似乎已经注意到,当您在Laravel中创建新用户时,不会创建Auth对象-您用来获取(new)应用程序其余部分中的已登录用户的ID。这是一个问题,我相信您可能会问。我在userController :: store:
您必须检查用户是否已登录?
首先登录的支票用户然后登录
对于Laravel 6.X,您可以执行以下操作:
现在有了laravel 4.2,很容易获得用户ID:
$userId = Auth::id();
就是全部。
但是要检索除id以外的用户数据,请使用:
$email = Auth::user()->email;
有关更多详细信息,请检查security part of the documentation
进行Auth :: check()之前,请确保您已正确登录:
if (Auth::check())
{
// The user is logged in...
}
id是protected
,只需在/models/User.php
中添加一个公共方法>
public function getId() { return $this->id; }
所以可以叫它
$id = Auth::user()->getId();
请记住始终测试用户是否已登录...
if (Auth::check())
{
$id = Auth::user()->getId();
}
在Laravel 5.6中,我使用
检查route
中是否使用了Auth::user()
的函数,要获取Auth :: user()数据,该函数应位于web
中间件Route::group(['middleware' => 'web'], function () {});
中。
永远不要忘记包含:
使用照亮\支持\外观\验证;
如果有人在寻找laravel 5>