|

Authentification serveur Web ESP32 avec LittleFS

Prérequis :

  • 1 x Carte ESP32
  • Fils de connexion

Version IDE :

  • Arduino IDE 2.3.5

Bibliothèque :

Vidéo de démonstration :

Schéma de câblage :

Code :

Code Arduino :
#include "LittleFS.h"
#include <AsyncTCP.h>
#include <ESPAsyncWebServer.h>
#include <WiFi.h>
const char *ssid = "......."; // "Votre Nom_du_routeur"
const char *password = "......."; // "Votre Mot_de_passe_du_routeur"

AsyncWebServer server(80);
const char *www_username = "admin"; // "Login Web"
const char *www_password = "admin"; // "Mot de pass Web"


void setup() {
  Serial.begin(115200);
  Serial.println();
  Serial.print("Connecting to ");
  Serial.println(ssid);

  WiFi.begin(ssid, password);

  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }

  Serial.println("");
  Serial.println("WiFi connected.");
  Serial.println("IP address: ");
  Serial.println(WiFi.localIP());

  server.begin();


  if (!LittleFS.begin()) {
    Serial.println("An Error has occurred while mounting LittleFS");
    return;
  }

  server.on("/", HTTP_GET, [](AsyncWebServerRequest *request) {
    request->send(LittleFS, "/index.html", "text/html");
  });

  server.on("/login", HTTP_GET, [](AsyncWebServerRequest *request) {
    if (!request->authenticate(www_username, www_password))
      return request->requestAuthentication();
    request->send(LittleFS, "/login.html", "text/html");
  });

  server.on("/logout", HTTP_GET, [](AsyncWebServerRequest *request) {
    request->send(401);
  });

  server.on("/logged-out", HTTP_GET, [](AsyncWebServerRequest *request) {
    request->send(LittleFS, "/logout.html", "text/html");
  });

  server.on("/script.js", HTTP_GET, [](AsyncWebServerRequest *request) {
    request->send(LittleFS, "/script.js", "text/javascript");
  });

  delay(10);
}

void loop() {
}
Code HTML :

( index.html )

<!DOCTYPE html>
<html lang="fr">

    <head>
        <title>ESPLOGIN</title>
        <meta name="viewport" content="width=device-width, initial-scale=1" charset="UTF-8" />
    </head>

    <body>
        <center>
            <div>
                <br>
                <p>Bienvenue sur votre serveur Web ESP32</p>
                <p>Exemple authentification</p>
                <a href="login">
                <input type="button" value="LOGIN">
                </a>
            </div>
        </center>
    </body>

</html>

( login.html )

<!DOCTYPE html>
<html lang="fr">

    <head>
        <title>ESPLOGIN</title>
        <meta name="viewport" content="width=device-width, initial-scale=1" charset="UTF-8" />
        <script type="text/javascript" src="script.js"></script>  
    </head>

    <body>
        <center>
        <div> 
            <p>Bienvenue</p>
            <a href="#" onclick="logoutButton()">Logout</a>
        </div> 
        </center> 
    </body>

</html>

( logout.html )

<!DOCTYPE html>
<html lang="fr">

  <head>
    <title>ESPLOGIN</title>
    <meta name="viewport" content="width=device-width, initial-scale=1" charset="UTF-8" />
  </head>
    
  <body>
    <center>
      <div>
        <p>Déconnecté</p>
        <a href="/">Retour à la page d'accueil</a>.
      </div>
    </center>
  </body>

</html>
Code Javascript :

( script.js )

function logoutButton() {
    var xhr = new XMLHttpRequest();
    xhr.open("GET", "/logout", true);
    xhr.send();
    setTimeout(function(){ window.open("/logged-out","_self"); }, 1000);
  }

Publications similaires

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *