【问题标题】:id parameter of Auth return an error -Laravel APIAuth 的 id 参数返回错误 -Laravel API
【发布时间】:2021-09-17 19:13:35
【问题描述】:

这是一个上传文件的 API。在此,管理员和其他用户可以上传文件。所以,我需要找到上传它的人并将其存储到uploadedBy 列。尝试使用以下代码时,我收到错误Trying to get property 'id' of non-object。我不确定我是否可以得到这样的 id。请帮助我提出您的建议。

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\Models\Files;
use Illuminate\Support\Facades\Auth;

class FileController extends Controller
{
    public function __construct()
    {
       $this->middleware('auth:api');
    }
    public function upload(Request $req)
    {
        $file=$req->file('file_name');
        $dataToInsert = array();
        $filePath= uniqid().'-'.now()->timestamp;
        $dataToInsert['FilePath'] = $filePath;
        $dataToInsert['uploadedBy'] = Auth::user()->id;
        $dataToInsert['Userid'] = $req->bearerToken();
        Files::create($dataToInsert);
    }
}

编辑:添加了中间件。现在的错误是 API 只显示了消息unauthenticated

【问题讨论】:

  • 由于Auth::user()-&gt;id; 触发错误,用户未通过身份验证。
  • unauthenticated 的身份验证中出现了问题,我们无法为您提供更多信息。这是一些线索:尝试使用新令牌(可能已过期)。如果您有另一个有效的 API 路由,请检查它是如何完成的(也许您有另一个 API 身份验证,例如来自 tymon 的 jwt-auth)。检查你的中间件类(如果你修改了它们)

标签: laravel jwt laravel-8 rest


【解决方案1】:

可以通过auth()-&gt;id()获取认证用户的id 编辑:您需要先登录,否则会抛出错误

【讨论】:

  • 这是他尝试过的,也是触发错误的原因
  • 表示他还没有登录
  • 不,不是那个意思。他问How to access id parameter of Auth,答案告诉如何访问它
【解决方案2】:

你应该把你的路由放在auth中间件上,这个路由只有经过认证才能访问,这样你就可以通过auth()-&gt;user()获取用户信息。

仅访问id,仅访问auth()-&gt;id(),如果应用程序未通过身份验证,则可以返回null。 请注意,您在 auth() 助手中传递门名称,例如:auth('api')-&gt;id()

【讨论】:

    猜你喜欢
    • 2019-02-02
    • 2017-11-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-26
    • 2020-02-20
    • 2013-10-09
    • 1970-01-01
    相关资源
    最近更新 更多