如何访问输入的令牌值 - Laravel API

Posted

技术标签:

【中文标题】如何访问输入的令牌值 - Laravel API【英文标题】:How to access inputted token value - 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);
    

【问题讨论】:

我想这会解决你的问题:https://***.com/questions/35137768/how-to-use-postman-for-laravel-post-request 【参考方案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。尝试阅读文档,进行一些研究并尝试实施它!如果您将来遇到任何问题,也许打开一个新问题会更好。

以上是关于如何访问输入的令牌值 - Laravel API的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Laravel Passport 访问令牌

Laravel 通过 Passport 实现 API 请求认证:沙箱测试篇(私人访问令牌)

Laravel Passport:手动创建访问令牌

如何使用 Laravel 管理 OAuth 刷新令牌?

laravel socialite 从谷歌授权码获取谷歌访问令牌

如何从 laravel 刀片访问 JWT?