PHP Classes

File: readme.md

Recommend this page to a friend!
  Classes of Rodrigo Faustino   PHP AJAX Login with JWT and Fetch API   readme.md   Download  
File: readme.md
Role: Documentation
Content type: text/markdown
Description: Documentation
Class: PHP AJAX Login with JWT and Fetch API
Login users using AJAX to send JWT to a server API
Author: By
Last change:
Date: 5 months ago
Size: 2,749 bytes
 

Contents

Class file image Download

Sistema de Login com JWT

Sistema de autenticação simples utilizando JSON Web Tokens (JWT).

Requisitos

  • PHP
  • Biblioteca `firebase/php-jwt`

Instalação

Clone o repositório depois instale a dependencia abaixo Instale a biblioteca via composer:

composer require firebase/php-jwt
composer require bramus/router
composer update

Uso

Após a instalçao das dependências acima mencionadas, uma para gerenciar a criação e validação do token, a outra é para gerenciar rotas semelhante o que acontece com os principais frameworks, onde é capturado o metodo e o recurso e direciona para a função no contralador especifico.

Login

Ao realizar o login, um token JWT é gerado para o usuário com base em suas credenciais. o frontend recebe o token caso a autenticação seja bem sucedida, e o javascript "x.js" a cada 1 minuto faz uma requisição para verificar o token e verificar as telas autorizadas pela passoa logada.

$key = "YOUR_SECRET_KEY";
$payload = [
 "iss" => "localhost",
 "aud" => "localhost",
 "iat" => time(),
 "exp" => time() + 3600,  // Expira em 1 hora
 "sub" => "user@email.com"
];

$jwt = JWT::encode($payload, $key);

Validação de Token Para validar o token recebido em requisições subsequentes:

$key = "YOUR_SECRET_KEY";

try {
    $decoded = JWT::decode($token, $key, ['HS256']);
    // Token é válido
} catch(Exception $e) {
    // Token inválido
}

Estrutura do Projeto

backend/Controller/UsuarioController.php: Contém a lógica para gerar e validar o JWT. backend/Router/: Roteamento e processamento das requisições HTTP.

Como Usar

  • Login Para fazer login, envie uma requisição POST para backend/Router/ com os campos email e senha. Se for bem-sucedido, você receberá um JWT que será usado para futuras autenticações, salvando em sessionStorage.
    const response = await fetch(urlBase+'backend/Router/login', {
        method: 'POST',
        headers: {
            'Content-Type': 'application/json'
        },
        body: JSON.stringify({ email, senha: password,lembrar })
    });
    const data = await response.json();
    if (data.status) {
        sessionStorage.setItem('token', data.token);
        window.location.href = "index.html"; 
    }
  • Validar Token Para validar o token, envie uma requisição GET para backend/Router/loginRouter.php com o token no cabeçalho de Autorização. O token será validado e, se ainda estiver válido, a resposta será positiva.

Bônus (recursos adicionais)

  • Os javascripts cards e times fazem uma busca fetch para um json que está estruturado, e o javascript ler o conteúdo e monta os cards, essa parte foi criada para mostrar a manipulação do DOM sem um banco de dados