当我提交表单以添加用户时,我收到以下错误“尝试获取非对象的属性”,错误显然在第一行:Auth :: user() - >以下内容:
$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身份验证包登录。
答案 0 :(得分:51)
如果您使用Sentry
,请使用Sentry::getUser()->id
检查登录用户。您得到的错误是Auth::user()
返回NULL并且它尝试从NULL获取id,因此错误trying to get a property from a non-object
。
答案 1 :(得分:50)
现在使用laravel 4.2很容易获得用户的身份:
$userId = Auth::id();
就是这样。
但要检索除id以外的用户数据,请使用:
$email = Auth::user()->email;
有关详细信息,请查看security part of the documentation
答案 2 :(得分:39)
之前做一个Auth :: check()以确保您已登录:
if (Auth::check())
{
// The user is logged in...
}
答案 3 :(得分:17)
id为protected
,只需在/models/User.php
public function getId()
{
return $this->id;
}
所以你可以称之为
$id = Auth::user()->getId();
记住要测试用户是否已登录...
if (Auth::check())
{
$id = Auth::user()->getId();
}
答案 4 :(得分:7)
我在Laravel 5.6中使用
use Auth;
$user_id = Auth::user()->id;
作为其他建议
Auth::id()
似乎适用于旧版本的Laravel 5.x,对我不起作用。
答案 5 :(得分:6)
检查route
以查找您正在使用的函数Auth::user()
,要获取Auth :: user()数据,该函数应位于web
中间件Route::group(['middleware' => 'web'], function () {});
内。
答案 6 :(得分:5)
您可以通过Auth外观访问经过身份验证的用户:
use Illuminate\Support\Facades\Auth;
// Get the currently authenticated user...
$user = Auth::user();
// Get the currently authenticated user's ID...
$id = Auth::id();
答案 7 :(得分:4)
使用Illuminate \ Support \ Facades \ Auth;
课堂上:
protected $user;
这段代码对我有用
在构造中:
$this->user = User::find(Auth::user()->id);
In function:
$this->user->id;
$this->user->email;
等..
答案 8 :(得分:4)
永远不要忘记包含:
pip install keras_applications==1.0.4 --no-deps
pip install keras_preprocessing==1.0.2 --no-deps
pip install h5py==2.8.0
然后使用请求方法找到ID:
use Illuminate\Http\Request;
答案 9 :(得分:2)
您的问题和代码示例有点模糊,我相信其他开发人员正在关注错误的事情。我正在Laravel中创建一个应用程序,使用在线教程创建新用户和身份验证,并且似乎注意到当您在Laravel中创建新用户时,不会创建任何Auth对象 - 您可以使用它来获取(新)登录用户在应用程序其余部分的ID。这是一个问题,我相信你可能会问。我在userController :: store:
中做了这种cludgy hack$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);
不应该创建和验证,但我不知道还能做什么。
答案 10 :(得分:2)
如果有人正在寻找laravel 5>
Auth::id()
提供授权用户的ID
答案 11 :(得分:2)
第一个支票用户登录,然后
if (Auth::check()){
//get id of logged in user
{{ Auth::getUser()->id}}
//get the name of logged in user
{{ Auth::getUser()->name }}
}
答案 12 :(得分:1)
您必须检查用户是否已登录?
VendorCode
答案 13 :(得分:1)
在Laravel 8.6中,以下内容在控制器中对我有用:
$id = auth()->user()->id;
答案 14 :(得分:1)
对于Laravel 6.X,您可以执行以下操作:
$user = Auth::guard(<GUARD_NAME>)->user();
$user_id = $user->id;
$full_name = $user->full_name;
答案 15 :(得分:0)
if(Auth::check() && Auth::user()->role->id == 2){
$tags = Tag::latest()->get();
return view('admin.tag.index',compact('tags'));
}
答案 16 :(得分:0)
它正在和我一起工作:
echo Auth::guard('guard_name')->user()->id;
答案 17 :(得分:0)
您可以尝试:
$id = \Auth::user()->id
答案 18 :(得分:0)
Laravel 8 解决方案:
use Illuminate\Support\Facades\Auth;
// Retrieve the currently authenticated user...
$user = Auth::user();
// Retrieve the currently authenticated user's ID...
$id = Auth::id();
有关详细信息,请参阅最新文档 here