我有两个控制器; AuthController
和CheckoutController
现在我的AuthController
处理用户登录和注册,当用户登录时我可以检查他们的登录信息状态并从user_id
获取AuthController
。
但是,当我尝试在CheckoutController
中执行此操作时,我总是Auth::user()->id
返回此错误:
尝试获取非对象的属性
无论我做什么总是一样的,我已经在网上寻找解决方案,但却找不到任何相关信息。
我刚刚意识到了一些问题,我的AuthController
和CheckoutController
位于 2个不同的名称空间中,我想知道这是否可能是原因/原因。
这是我的登录代码:
/**
* Handle a login request to the application.
*
* @param LoginRequest $request`
* @return Response
*/
public function postLogin(LoginRequest $request)
{
$credentials = $request->only('email', 'password');
try {
// verify the credentials and create a token for the user
if (!$token = JWTAuth::attempt($credentials)) {
return response()->json(['code' => 300, 'message' => 'invalid_credentials'], 401);
}
} catch (JWTException $e) {
// something went wrong
return response()->json(['error' => 'could_not_create_token'], 500);
}
$url_parts = parse_url($request->url());
$host_parts = explode('.', $url_parts['host']);
if ($host_parts[0] == "admin")
{
$user = User::find(Auth::user()->id);
if (!$user->is('administrator'))
{
Auth::logout();
return response()->json(['error' => 'You Are Not Authorized!']);
}
}
// if no errors are encountered we can return a JWT
return response()->json(compact('token'));
}
答案 0 :(得分:0)
命名空间对此无关紧要,看起来您可能正在使用错误的方法来记录用户,您使用的是Auth :: once而不是Auth :: attempt吗?