Authentification web et GET

Alors j'ai donc modifier le code et repris la séquence et j'ai des résultat positif mais je rencontre encore des difficultés:

le GET ON est bien exécuté la LEDs s'allume et le statut est pris en compte, par contre j'ai toujours mon URL qui garde le commande GET : http://192.168.0.200:9623/?lum=on.

Or elle devrais se remettre : http://192.168.0.200:9623

Ensuite quand j'appui sur OFF le commande GET est exécuté la LED s'éteint mais le statut d'affichage n'est pas actualisé et j'ai toujours http://192.168.0.200:9623/?lum=off.

comment creer un timout sur la durée de validité de l'identification car je ne retrouve plus ma demande d'identification
et au final l'identification ne fonctionne plus elle est valide en permanence !!

voici le code

#include <SPI.h>
#include <Ethernet.h>

// Entrez une adresse MAC et une adresse IP pour votre contrôleur ci-dessous.
// L'adresse IP est :
byte mac[] = { 
  0xDE, 0xAD, 0xAF, 0xBA, 0xEE, 0xDF };
IPAddress ip(192,168,0,200);
String readString;

// Initialiser la bibliothèque du serveur Ethernet
// avec l'adresse IP et le port que vous souhaitez utiliser
EthernetServer server(9623);

void setup() {
  Serial.begin(115200);

  // démarrez la connexion Ethernet et le serveur :
  Ethernet.begin(mac, ip);
  server.begin();
  Serial.print("server is at ");
  Serial.println(Ethernet.localIP());

  pinMode(7, OUTPUT); digitalWrite(7, HIGH);

}
 

char linebuf[100];
int charcount=0;
boolean authentificated=false;

void loop() {
  // listen for incoming clients
  EthernetClient client = server.available();
  if (client) {
    Serial.println("Nouvelle connexion client");
    memset(linebuf,0,sizeof(linebuf));
    charcount=0;

    authentificated=false;   // authentifié = faux
    // une requête http se termine par une ligne vide
    boolean currentLineIsBlank = true;    //la ligne actuelle est vide = vrai
    while (client.connected()) {    // boucle infini -> tant que le client et connecté
        if (client.available()) {    // et queleclient est disponible
        char c = client.read();
  
           linebuf[charcount]=c;
       
        if (charcount<sizeof(linebuf)) charcount++;
        Serial.write(c);
            
        // si vous êtes arrivé à la fin de la ligne (reçu un saut de ligne
        // caractère) et la ligne est vide, la requête http est terminée,
        // vous pouvez donc envoyer une réponse
        if (c == '\n' && currentLineIsBlank) {
          
          if (authentificated){
           
            SendOKpage(client);

          }
          else
            SendAuthentificationpage(client);
          break;
        }
        
        if (c == '\n') {
          // tu commences une nouvelle ligne
          currentLineIsBlank = true;    //la ligne actuelle est vide = vrai
          
          if (strstr(linebuf,"Authorization: Basic")>0 && strstr(linebuf,"dGVzdDpUZXN0")>0) // Encryptage "ident:pass" via https://www.base64encode.org/  {forme ident:pas}
            Serial.println(F("On verifie le id et pass"));
            authentificated=true;

         if (strstr(linebuf,"/?lum=on") >0){
              Serial.println(F("On allume la led"));
                   digitalWrite(7, LOW);
                  
                    }

             if (strstr(linebuf,"/?lum=off") >0){
              Serial.println(F("On eteint la led"));
                  digitalWrite(7, HIGH);
                  
                    }
          memset(linebuf,0,sizeof(linebuf));
          charcount=0;

        } 
        else if (c != '\r') {
          // vous avez un caractère sur la ligne actuelle
          currentLineIsBlank = false;
        //  Serial.println(F("arrivée de nouvelle donnee"));
        }
      }
    }
    // give the web browser time to receive the data
    delay(1);
    // close the connection:
    client.stop();
   
    Serial.println("client disonnected");
    Serial.println(F(""));

  }
}

void SendOKpage(EthernetClient &client)
{
          // envoyer un en-tête de réponse http standard
          client.println("HTTP/1.1 200 OK");
          client.println("Content-Type: text/html");
          client.println("Connnection: close");
          client.println();
          client.println("<!DOCTYPE HTML>");
          client.println("<html>");

          client.println(F("<body style=\"color: #ffffff; background-color: #0c273d;\">"));
          client.println(F("<style> #Bouton_1{background-color:red; width:150px; height:100px;} #Bouton_2{width:150px; height:100px; font size:9; } #Bouton_3{background-color:#ED2FD7;}</style>"));
          
          client.println(F("<br />"));
          client.println(F("<a href=\"/?lum=on\"\"><input type=button value=ON id='Bouton_2' ></a>"));
          client.println(F("<a href=\"/?lum=off\"\"><input type=button value=OFF id='Bouton_2' ></a>"));
          client.println(F("<br />"));
          client.println(F("<br />"));
          client.print(F("Etat de l'Eclairage : "));
          if(digitalRead(7) == HIGH){
            client.println(F("<font color=#9E9F6C>"));
            client.print(F(" ETEINT"));
            client.println(F("</font>"));
            client.println(F("<br />"));
          }
          if(digitalRead(7) == LOW){
            client.println(F("<font color=#F6FA04>"));
            client.print(F(" ALLUME"));
            client.println(F("</font>"));
            client.println(F("<br />"));
          }
          client.println(F("<br />"));

          client.println("</html>");
}

void SendAuthentificationpage(EthernetClient &client)
{
          client.println("HTTP/1.1 401 Authorization Required");
         
          client.println("WWW-Authenticate: Basic realm=\"Secure Area\"");
           
          client.println("Content-Type: text/html");
          
          client.println("Connnection: close");
          client.println(F("<body style=\"color: #ffffff; background-color: #0c273d;\">"));
          client.println();
          client.println("<!DOCTYPE HTML>");
          
          client.println("<HTML>  <HEAD>   <TITLE>Error</TITLE>");
          client.println(" </HEAD> <BODY><H1>401 Unauthorized.</H1></BODY> </HTML>");