Bom dia, estou tentando utilizar esse projeto mas adaptando para usar também paginas web feitas com twig. Funciona tudo bem sem problemas, mas não estou conseguindo add no cabeçalho do response da pagina twig a Authorization com o tokem.No LoginController já tentei redirecionar com os comandos: "return $this->redirectToRoute('dashboard', array('access_token' => $token));" e "$response = new RedirectResponse('/dashboard', 302, array('Bearer ' => $token)); $response->send();" mas nenhuma das duas esta adicionado o Authorization no header, logo no JwtAutenticador na function getCredentials não enconta o token. Pode me dar alguma dica de como fazer essa autenticação utilizando essa mesma estrutura?
Vou colocar como ficou meu LoginController
<?php
namespace App\Controller;
use App\Repository\UserRepository;
use Firebase\JWT\JWT;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\JsonResponse;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;
use Symfony\Component\Security\Core\Encoder\UserPasswordEncoderInterface;
use Symfony\Component\HttpFoundation\RedirectResponse;
class LoginController extends AbstractController
{
/**
* @var UserRepository
*/
private $repository;
/**
* @var UserPasswordEncoderInterface
*/
private $encoder;
public function __construct(
UserRepository $repository,
UserPasswordEncoderInterface $encoder
) {
$this->repository = $repository;
$this->encoder = $encoder;
}
/**
* @Route("/login", name="login")
*/
public function index(Request $request)
{
if (0 === strpos($request->headers->get('Content-Type'), 'application/json')){
$json = $request->getContent();
}else{
$entidade = array(
'usuario' => $request->request->get('usuario'),
'senha'=> $request->request->get('senha'),
);
$json = json_encode($entidade);
};
$dadosEmJson = json_decode($json);
if (is_null($dadosEmJson->usuario) || is_null($dadosEmJson->senha)) {
return new JsonResponse([
'erro' => 'Favor enviar usuário e senha'
], Response::HTTP_BAD_REQUEST);
}
$user = $this->repository->findOneBy([
'username' => $dadosEmJson->usuario
]);
if (!$this->encoder->isPasswordValid($user, $dadosEmJson->senha)) {
return new JsonResponse([
'erro' => 'Usuário ou senha inválidos'
], Response::HTTP_UNAUTHORIZED);
}
$token = JWT::encode(['username' => $user->getUsername()], 'B@r12bo16', 'HS256');
//testa se é uma requisição web ou json
if (0 === strpos($request->headers->get('Content-Type'), 'application/json')){
return new JsonResponse(['access_token' => $token]);
}else{
$response = new RedirectResponse('/dashboard', 302, array('Bearer ' => $token));
$response->send();
//return $this->redirectToRoute('dashboard', array('access_token' => $token));
}
}
}