Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

JWT::decode

Bom dia.

Eu estava com problemas na classe AuthServiceProvider.php.

Conforme visto na aula:

    public function boot()
    {
        $this->app['auth']->viaRequest('api', function (Request $request) {
            if (!$request->hasHeader('Authorization')) {
                return null;
            }
            $authorizationHeader = $request->header('Authorization');
            $token = str_replace('Bearer ', '', $authorizationHeader);

            $dadosAuth = JWT::decode($token, env('JWT_KEY'), ['HS256']);
            return User::where('email', $dadosAuth->email)->first();
        });
    }

Só que me retornava a mensagem de erro:

$keyOrKeyArray must be an instance of Firebase\JWT\Key key or an array of Firebase\JWT\Key keys

Alterei para:

    public function boot()
    {
        $this->app['auth']->viaRequest('api', function (Request $request) {
            if (!$request->hasHeader('Authorization')) {
                return null;
            }
            $authorizationHeader = $request->header('Authorization');
            $token = str_replace('Bearer ', '', $authorizationHeader);

            $key = new Key(env('JWT_KEY'), 'HS256'); // ---> passei a key desta forma

            $dadosAuth = JWT::decode($token, $key);

            return User::where('email', $dadosAuth->email)->first();
        });
    }

Aí foi. É isso mesmo? Ou fiz algo errado no primeiro?

1 resposta
solução!

Oi Flávio, tudo bem?

No primeiro código, o erro ocorreu porque a função JWT::decode() esperava um objeto ou um array de objetos Firebase\JWT\Key, mas recebeu apenas uma string (o valor da variável de ambiente).

A segunda versão do código está correta e é a maneira apropriada de fornecer a chave para a função JWT::decode(). É assim que a biblioteca Firebase PHP-JWT espera que a chave seja fornecida.

Fico feliz que tenha conseguido solucionar sozinho.

Caso surjam dúvidas, fico à disposição.

Abraços e bons estudos!

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software