Skip to content
SalisNet

SalisNet

  • Chi sono
  • Fotografia
  • Tips & Trick
  • Pillole
  • Lavori
  • Contatti
  • Cookie Policy (UE)
search
search
Esempio login e JWT token
Feb2828 Febbraio 2024

Esempio login e JWT token

JavaScript, php, Web&Developer

Vi riporto un semplice esempio che ci permette di rendere più sicure le nostre aree protette sulle nostre webapp. Una login che ci restituisce un token con tutti i dati che vogliamo salvarci dell’utente. Troverete tanti esempi in rete di questa metrologia. Dopo la login web di solito andiamo a salvarci dei dati dentro le sessioni o cookies per capire chi è l’utente e se è loggato. In questo modo andiamo a creare un token con chiave di codifica che ci permette di avere più sicurezza dei dati.

Prima di tutto dobbiamo installare sul nostro progetto JWT. Da terminale usiamo queste istruzioni (premetto che è necessario avere composer installato):

composer update

Poi andiamo a installare sulla cartella del progetto Firebase\JWT:

composer require firebase/php-jwt

A questo punto viene generata la cartella vendor sul nostro progetto. Ora andiamo a creare la nostra pagina di login io l’ho chiamata nel progetto index.html:

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Login</title>
</head>
<body>
<h2>Login</h2>
<form id="loginForm">
  <label for="username">Username:</label><br>
  <input type="text" id="username" name="username"><br>
  <label for="password">Password:</label><br>
  <input type="password" id="password" name="password"><br><br>
  <input type="submit" value="Login">
</form>

<script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
<script src="script.js"></script>
</body>
</html>

A questo punto andiamo a creare la pagina script.js dove andiamo a interagire con il server e il codice php che si occupa di andare a verificare i dati inseriti (potranno essere verificati da un db o da altro) :

$(document).ready(function() {
  $('#loginForm').submit(function(e) {
    e.preventDefault();
    var username = $('#username').val();
    var password = $('#password').val();      
    $.ajax({
      type: 'POST',
      url: 'login.php',
      data: { username: username, password: password },
      success: function(response) {          
        var token = JSON.parse(response); // faccio parse
        console.log("Token: " + token.token); // mi restituisco tutto il token in console log          
      },
        error: function(xhr, status, error) {
        console.error(error);
      }
    });
  });
});

Quindi andiamo a creare la pagina login.php:

<?php 
require_once 'vendor/autoload.php';
use \Firebase\JWT\JWT;

function jwt_encode($payload, $key) {
  $header = base64_encode(json_encode(array('typ' => 'JWT', 'alg' => 'HS256')));
  $payload = base64_encode(json_encode($payload));
  $signature = hash_hmac('sha256', "$header.$payload", $key, true);
  $signature = base64_encode($signature);
  return "$header.$payload.$signature"; 
}

$username = $_POST['username'];
$password = $_POST['password'];

if ($username === 'utente' && $password === 'prova') {
  // Emetti un token JWT valido


  $key = "14071973";
  $payload = array(
      "user_id" => 123,
      "username" => "esempio",
      "email" => "esempio@example.com",
      "exp" => time() + 3600 // Scadenza del token dopo 1 ora (tempo in formato UNIX)
  );
  
  $token = jwt_encode($key, 'chiave-segreta');
  $_SESSION['token'] = $token;
  echo json_encode(array('token' => $token));

} else {
  http_response_code(401); // Non autorizzato
  echo json_encode(array('message' => 'Credenziali non valide'));
}
?>

Andiamo prima di tutto a includere la libreria jwt:
require_once ‘vendor/autoload.php’;
use \Firebase\JWT\JWT;

e poi utilizziamo la funzione function jwt_encode($payload, $key) per creare la codifica.

Nel $payload andiamo a settarci i dati che vogliamo salvarci.

Molto semplice da applicare ai propri progetti.

trovate tutto l’esempio scaricabile qui: https://github.com/oldpan73/phpjwtlogin

Letture: 48
By : Andrea Tags: javascript JWT LOGIN php web

Navigazione articoli

Un aiuto da ChatGPT per creare un buyer personas (cliente tipo)
Comunicazione integrata

Menu

  • Chi sono
  • Fotografia
  • Tips & Trick
  • Pillole
  • Lavori
  • Contatti
  • Cookie Policy (UE)

Cerca

Categorie

  • Dalla rete (51)
  • Eventi e News (65)
  • Fotografia (52)
  • Gimp (5)
  • Internet (10)
  • Lavori (5)
  • Luoghi (16)
    • Luoghi da visitare (14)
  • Marketing (12)
  • Seo&Marketing (27)
  • Storie (2)
  • Trip&Food (3)
  • Un po di tutto (27)
    • Fisco (7)
  • Web Marketing (9)
  • Web&Developer (73)
    • aspx (1)
    • Bootstrap (2)
    • Css HTML (7)
    • JavaScript (12)
    • MySql (4)
    • php (18)
    • Pillole (40)
    • Sicurezza (2)
    • Tips & Trick (26)

Tag

2021 adobe borgo componenti comunicazione Cryptolocker dati dominio facebook fisco foto fotografia GDPR glamour google html immagini italia javascript jquery liguria linux lunigiana mail marketing microsoft mobile notizie php privacy rete seo serp sito smartphone social network tag toscana turismo upload virus web webdesign website wordpress

Tag

2021 adobe borgo componenti comunicazione Cryptolocker dati dominio facebook fisco foto fotografia GDPR glamour google html immagini italia javascript jquery liguria linux lunigiana mail marketing microsoft mobile notizie php privacy rete seo serp sito smartphone social network tag toscana turismo upload virus web webdesign website wordpress

Categorie

  • aspx
  • Bootstrap
  • Css HTML
  • Dalla rete
  • Eventi e News
  • Fisco
  • Fotografia
  • Gimp
  • Internet
  • JavaScript
  • Lavori
  • Luoghi
  • Luoghi da visitare
  • Marketing
  • MySql
  • php
  • Pillole
  • Seo&Marketing
  • Sicurezza
  • Storie
  • Tips & Trick
  • Trip&Food
  • Un po di tutto
  • Web Marketing
  • Web&Developer
Theme: Reblog by Moral Themes.
Gestisci Consenso Cookie
Per fornire le migliori esperienze, utilizziamo tecnologie come i cookie per memorizzare e/o accedere alle informazioni del dispositivo. Il consenso a queste tecnologie ci permetterà di elaborare dati come il comportamento di navigazione o ID unici su questo sito. Non acconsentire o ritirare il consenso può influire negativamente su alcune caratteristiche e funzioni.
Funzionale Sempre attivo
L'archiviazione tecnica o l'accesso sono strettamente necessari al fine legittimo di consentire l'uso di un servizio specifico esplicitamente richiesto dall'abbonato o dall'utente, o al solo scopo di effettuare la trasmissione di una comunicazione su una rete di comunicazione elettronica.
Preferenze
L'archiviazione tecnica o l'accesso sono necessari per lo scopo legittimo di memorizzare le preferenze che non sono richieste dall'abbonato o dall'utente.
Statistiche
L'archiviazione tecnica o l'accesso che viene utilizzato esclusivamente per scopi statistici. L'archiviazione tecnica o l'accesso che viene utilizzato esclusivamente per scopi statistici anonimi. Senza un mandato di comparizione, una conformità volontaria da parte del vostro Fornitore di Servizi Internet, o ulteriori registrazioni da parte di terzi, le informazioni memorizzate o recuperate per questo scopo da sole non possono di solito essere utilizzate per l'identificazione.
Marketing
L'archiviazione tecnica o l'accesso sono necessari per creare profili di utenti per inviare pubblicità, o per tracciare l'utente su un sito web o su diversi siti web per scopi di marketing simili.
Gestisci opzioni Gestisci servizi Gestisci {vendor_count} fornitori Per saperne di più su questi scopi
Visualizza le preferenze
{title} {title} {title}