Laravel: Auth::user()->id 试图获取一个非对象的属性。
Laravel: Auth::user()->id 试图获取一个非对象的属性。
当我提交一个表单来添加一个用户时,我得到了以下错误:“尝试获取一个非对象的属性”,这个错误显然在以下代码的第一行:Auth::user()->id:\n
$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);
\n有什么想法吗?我已经搜索了一段时间,但是我看到的所有内容都说这应该正常工作。我的用户是使用Sentry 2身份验证包登录的。
在Laravel中使用`Auth::user()->id`时出现问题`trying to get a property of a non-object`的原因是尝试从一个非对象中获取属性。解决方法是在使用`Auth::user()->id`之前先进行`Auth::check()`的检查来确保用户已经成功登录。
在代码中添加以下判断:
if (Auth::check()) { // 用户已经成功登录... }
这样,当用户已经成功登录时,`Auth::user()->id`将会返回一个有效的对象。
如果想要在Blade模板中使用这个判断,可以使用以下代码:
@auth {{ Auth::user()->id }} @endauth
这在需要获取用户ID用于JavaScript或Ajax的情况下非常有用。
对于Laravel 6版本,也可以使用相同的方法来解决该问题。
Laravel: Auth::user()->id trying to get a property of a non-object问题的出现是因为在使用Auth::user()->id获取用户id时,尝试访问了一个非对象的属性。解决方法是确保用户已经通过身份验证并且已登录,然后才能访问用户的属性。
在Laravel 4.2中,可以通过Auth::id()轻松地获取用户的id,代码如下:
$userId = Auth::id();
但是,如果想要获取用户的其他数据而不仅仅是id,可以使用Auth::user()->属性名的形式,例如获取email:
$email = Auth::user()->email;
在Laravel 4.2的文档的安全部分可以找到更多详细信息。
需要注意的是,在Laravel 6.0及更高版本中,可以使用use Illuminate\Support\Facades\Auth;导入Auth类,然后直接使用Auth::id()来获取用户id,如下所示:
use Auth;
这样就能得到相同的结果。
Laravel: Auth::user()->id trying to get a property of a non-object问题的原因是尝试访问一个非对象的属性。解决方法是确保用户已经通过身份验证并登录,然后才能访问用户的属性。在Laravel 4.2中,可以使用Auth::id()获取用户id,而在Laravel 6.0及更高版本中,可以使用use Auth;导入Auth类来获取用户id。