【问题标题】:Unable to get Auth::user()->id无法获取 Auth::user()->id
【发布时间】:2016-02-04 19:38:50
【问题描述】:

我有两个控制器; AuthControllerCheckoutController 现在我的 AuthController 处理用户 LoginsRegistrations,当用户登录时,我可以检查他们的登录状态并获取他们的 @987654324 @来自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'));
    }

【问题讨论】:

  • 请发布您从AuthControllerCheckoutController 引用的代码。
  • 如果您使用 Laravel 的默认 Auth ,在其他名称空间中只需使用 \Auth::user()->id 确保用户也登录
  • 好的,我现在已经添加了我的登录代码。

标签: laravel authentication laravel-5 jwt


【解决方案1】:

命名空间对此无关紧要,您似乎使用了错误的方法来登录用户,您使用的是 Auth::once 而不是 Auth::attempt 吗?

【讨论】:

  • 您是否设置了 jwt auth 中间件以在每个请求上重新登录?
  • 每次请求都重新登录?我应该这样做吗?
  • 啊,所以您只需要进行身份验证检查并以不同方式处理未经身份验证的访问者
  • 如果您只需要用户 id 而不是必需的,那么您也可以使用 Auth::id
  • 尝试 $user = JWTAuth::parseToken()->authenticate() 如果用户已登录,则您可以获取 id,否则用户将等于 false
猜你喜欢
  • 1970-01-01
  • 2023-04-04
  • 1970-01-01
  • 2019-07-10
  • 1970-01-01
  • 2013-12-15
  • 1970-01-01
  • 2017-12-14
  • 2020-10-03
相关资源
最近更新 更多