![](/img/trans.png)
[英]Laravel: Auth::user()->id trying to get a property of a non-object
[英]Laravel: Trying to get property 'id' of non-object for Auth::User()->id;
我有以下登錄controller:
public function userLogin(Request $request) {
$rules = [
'email' => 'required|exists:users',
'password' => 'required'
];
$request->validate($rules);
$data = [
'email' => $request->get('email'),
'password' => $request->get('password'),
];
if(Auth::attempt($data))
{
$user = Auth::User();
$userid = Auth::User()->id;
return response()->json([
'user' => $user,
'token' => $user->createToken('yourAppName')->accessToken ,
$userid
]);
}
else
{
return response()->json('Unauthorized', 401);
}
}
我的web.php
(令牌是用 Laravel 護照生成的)
Route::get('/customize/{id}', function ($id) {
if (
User::where('id', Auth::User()->id)->whereHas('profile', function ($query) use ($id) {
return $query->where('id', $id);
})
->exists()
) {
return view( 'welcome' );
}
return "no";
});
出於某種原因,在使用logincontroller
測試我的登錄控制器時,我實際上收到了Auth::User()->id
的值。 但是在web.php
我收到Trying to get property 'id' of non-object
。 任何想法?
這是一個解決方案
您可以使用 email 和您擁有的密碼在 db 中找到該用戶並獲取其 ID
然后使用 LoginUsingId($id) 登錄您的用戶
找出為什么您不被視為經過身份驗證的用戶。 我猜你在使用 Postman 時會在請求標頭中發送身份驗證令牌。 當您直接在瀏覽器中點擊地址時,這是不可能的。
您可以將Auth::User()->id
替換為Auth::user()->id
也許大寫可能會導致問題
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.