Solucionado (ver solução)
Solucionado
(ver solução)
5
respostas

Erro Signature Verification failed (500 Internal Server Error)

Estou tendo este retorno ao colocar o token Podem me ajudar ?

TokenController.php

<?php


namespace App\Http\Controllers;

use App\User;
use Firebase\JWT\JWT;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Hash;

class TokenController extends Controller
{
    public function gerarToken(Request $request)
    {
        $this->validate($request, [
            'email' => 'required|email',
            'password' => 'required'
        ]);

        $usuario = User::where('email', $request->email)->first();

        if(is_null($usuario) ||
            Hash::check($request->password, $usuario->password)
        ) {
            return response()->json('Usuario ou senha inválidos', 401);
        }

        $token = JWT::encode(
            ['email' => $request->email],
            env('JWT_KEY'));

        return [
            'access_token' => $token
        ];
    }
}
5 respostas

Como está o código onde você faz o decode? O erro acontece já na rota de login? Pode disponibilizar o projeto todo no github pra eu dar uma olhada

solução!

Por experiencia propria minha eu escrevi o código faltando o espaço no final da palavra Bearer, essa bobagem me consumiu muitos neurônios se for isso veja ai

<?php

namespace App\Http\Middleware;

use Closure;
use App\User;
use Exception;
use Firebase\JWT\JWT;
use Illuminate\Http\Request;

class Autenticador
{
    public function handle(Request $request, Closure $next)
    {
        try {
            if (!$request->hasHeader('Authorization')) {
                throw new Exception();
            }
            $authorizationHeader = $request->header('Authorization');
            **$token = \str_replace('Bearer', '', $authorizationHeader);**
            $dataAuthentication = JWT::decode($token, \env('JWT_KEY'), [
                'HS256',
            ]);

            $user = User::where('email', $dataAuthentication->email)->first();
            if (\is_null($user)) {
                throw new Exception();
            }
            return $next($request);
        } catch (\Exception $e) {
            return \response()->json('Não autorizado', 401);
        }
    }
}

aqui deveria ter um espaço

 **$token = \str_replace('Bearer ** adicionar um espaço**', '', $authorizationHeader);**

Muito bem observado, Denis!

Gabriel, você continua com o problema?

Bom, vou encerrar esse tópido marcando a resposta do Denis como solução... Caso continue com o problema você pode abrir uma nova dúvida