Authentification serveur Web ESP32 avec LittleFS
Prérequis :
- 1 x Carte ESP32
- Fils de connexion
Version IDE :
- Arduino IDE 2.3.5
Bibliothèque :
- LittleFS.h (Tuto dispo)
- ESPAsyncWebServer.h (version: 3.7.10 par ESP32Async)
- AsyncTCP.h (version 3.4.7 par ESP32Async)
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); }