首页 > 解决方案 > Firebase 令牌:承载者是什么?

问题描述

我正在使用这个参考存储库来测试 Lumen 内的 firebase 令牌的身份验证: https ://github.com/alinnert/lumen-auth-reference

我在说明中无法理解这部分内容:

GET /secret
  Header:
    Authorization: "Bearer ...token..."

我正在使用 RESTClient (www.restclient.net) 通过 http 请求来刺激我的 Lumen 后端。在那里,我可以定义自定义标题,这可能是我需要在这里做的。所以我这样做了,我将名称输入字段设置为“授权”,它已经为我提供了自动完成功能,所以我想这是对的。然后我移动到属性值字段并输入

承载者...令牌...

现在,当我发送请求时,我得到以下响应:

UnexpectedValueException in JWT.php line 79: Wrong number of segments

    in JWT.php line 79
    at JWT::decode('Bearer...token...', 'pawifjopawiejfpoaiwejfpoji', array('HS256')) in AuthServiceProvider.php line 36
    at AuthServiceProvider->App\Providers\{closure}(object(Request))
    at call_user_func(object(Closure), object(Request)) in RequestGuard.php line 54
    at RequestGuard->user() in GuardHelpers.php line 49
    at RequestGuard->check() in GuardHelpers.php line 59
    at RequestGuard->guest() in Authenticate.php line 38
    at Authenticate->handle(object(Request), object(Closure)) in Pipeline.php line 148
    at Pipeline->Illuminate\Pipeline\{closure}(object(Request))
    at call_user_func(object(Closure), object(Request)) in Pipeline.php line 32
    at Pipeline->Laravel\Lumen\Routing\{closure}(object(Request)) in Pipeline.php line 102
    at Pipeline->then(object(Closure)) in RoutesRequests.php line 780
    at Application->sendThroughPipeline(array('App\\Http\\Middleware\\Authenticate'), object(Closure)) in RoutesRequests.php line 626
    at Application->handleFoundRoute(array(true, array('middleware' => array('auth'), 'uses' => 'App\\Http\\Controllers\\SecretController@index'), array())) in RoutesRequests.php line 528
    at Application->Laravel\Lumen\Concerns\{closure}() in RoutesRequests.php line 783
    at Application->sendThroughPipeline(array(), object(Closure)) in RoutesRequests.php line 534
    at Application->dispatch(null) in RoutesRequests.php line 475
    at Application->run() in index.php line 28

我不知道我是否只是语法错误,或者我是否需要提供句点所在的实际数据。所以而不是

不记名...令牌...

有点像

持有者: 令牌:

对于那些想自己尝试的人:在“SecretController.php”中,您需要将代码更改为:

<?php

namespace App\Http\Controllers;

//use Illuminate\Http\Request;


use App\User;
use Firebase\JWT\JWT;
use Illuminate\Http\Request;
use Illuminate\Http\Response;


class SecretController extends Controller
{
  public function index(Request $request)
  {
    return new Response('Hello ' . $request->user()->name,
      200, ['Content-Type', 'text/plain']);
  }

  public function pub()
  {
    return new Response('Hello World', 200, ['Content-Type', 'text/plain']);

  }
}

否则不能使用 web.php 中定义的 get 路由

标签: phplaravelfirebase-authenticationjwtlumen

解决方案


推荐阅读