无法获取Auth :: user() - > id

时间:2015-11-04 10:38:34

标签: laravel authentication laravel-5 jwt

我有两个控制器; AuthControllerCheckoutController现在我的AuthController处理用户登录注册,当用户登录时我可以检查他们的登录信息状态并从user_id获取AuthController

但是,当我尝试在CheckoutController中执行此操作时,我总是Auth::user()->id返回此错误:

  

尝试获取非对象的属性

无论我做什么总是一样的,我已经在网上寻找解决方案,但却找不到任何相关信息。

我刚刚意识到了一些问题,我的AuthControllerCheckoutController位于 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'));
    }

1 个答案:

答案 0 :(得分:0)

命名空间对此无关紧要,看起来您可能正在使用错误的方法来记录用户,您使用的是Auth :: once而不是Auth :: attempt吗?