【问题标题】:How to access inputted token value - Laravel API如何访问输入的令牌值 - Laravel API
【发布时间】:2021-09-17 17:45:51
【问题描述】:

我正在输入如上的令牌并尝试使用以下代码打印令牌值。但是出现错误Undefined variable: token。我不确定我是否可以访问令牌,如下所示。请帮助我提出您的建议。

<?php

namespace App\Http\Controllers;

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

class FileController extends Controller
{
  public function upload()
    {
       $tock=Auth::user()->$token;
       dd($tock);
    }
}

【问题讨论】:

标签: laravel jwt token laravel-8 rest


【解决方案1】:

您正在尝试访问用户上的$token 变量,即使它不存在。

相反,您应该尝试访问request 以及随请求发送的值。这可以使用 request() 帮助程序或通过将 Request 类注入函数来实现。

有注射:

<?php

namespace App\Http\Controllers;

use App\Models\Files;
use Illuminate\Http\Request; // Add request to namespace
use Illuminate\Support\Facades\Auth;

class FileController extends Controller
{
  public function upload(Request $request)
    {
       dd($request->bearerToken());
    }
}

或者,不注入:

<?php

namespace App\Http\Controllers;

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

class FileController extends Controller
{
  public function upload()
    {
       dd($request->bearerToken());
    }
}

使用bearerToken() 方法,您可以访问请求中提供的Bearer 令牌。

【讨论】:

  • 如果我需要不是输入字段的用户 id 怎么办?当我尝试Auth::user()-&gt;id; 时,我得到了错误trying to get id of a non object
  • 错误告诉你Auth::user()不是一个对象。因此,不能调用非对象的 ID。您需要找到一种方法来识别和授权用户。我假设您正在为此使用包装。如果是这样,您使用的是什么包?
  • 我只使用Auth
  • 好的!我认为您应该研究API的用户身份验证方法。 Auth 包(通常)用于web 路由。目前,您的用户未被 BearerToken 识别。系统如何知道什么 bearerToken 属于哪个用户,并决定该用户是否应该获得访问权限? Laravel 7.X 及更高版本可以访问Laravel Sanctum。尝试阅读文档,进行一些研究并尝试实施它!如果您将来遇到任何问题,也许打开一个新问题会更好。
猜你喜欢
  • 2019-11-22
  • 2019-03-22
  • 2018-05-29
  • 2020-04-14
  • 1970-01-01
  • 2019-06-09
  • 2017-02-13
  • 2020-03-19
  • 1970-01-01
相关资源
最近更新 更多