Come utilizzare la Based Authentication per accedere a una pagina protetta
La libreria Webduino implementa una semplice autenticazione basata sul protocollo http. Certamente non offre un livello di sicurezza impenetrabile ma può comunque essere utile utilizzare questa funzione per le nostre applicazioni.
Nell’esempio, viene caricata la pagina index.htm dove è presente un link che punta a una pagina protetta. per poter visualizzarne il contenuto è necessario inserire nome utente e password.
La based authentication si basa sulla codifica Base64. Il nume utente e la password, nella forma numeutente:password, vengono convertiti in un unica stringa di caratteri. Per la conversione, potete utilizzare diversi servizi online oppure scaricare la mia app ConvertBase64.
Il codice seguente è pronto all’uso, dovete cambiare solamente l’indirizzo ip, adattando lo alla vostra rete locale.
[c]
#include "SPI.h"
#include "Ethernet.h"
#include "WebServer.h"
//definisco mac address e indirizzo ip
static uint8_t mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
static uint8_t ip[] = { 192, 168, 1, 10};
//creo un oggetto webduino
WebServer webserver("", 80);
//funzione che crea la pagina principale del sito
void defaultCmd(WebServer &server, WebServer::ConnectionType type, char *, bool)
{
server.httpSuccess();
if (type != WebServer::HEAD)
{
//invio al browser la pagina principale
P(helloMsg) = "<h4>Accedi:</h4><a href=\"private.html\">Pagina Privata</a>";
server.printP(helloMsg);
}
}
//questa funzione permette di verificare il nome utente e la password
//e in caso di successo di visualizzare la pagina privata
void privateCmd(WebServer &server, WebServer::ConnectionType type, char *, bool)
{
//user= admin
//password= admin
//verifico nome utente e password
if (server.checkCredentials("YWRtaW46YWRtaW4="))
{
//in caso affermativo…
server.httpSuccess();
if (type != WebServer::HEAD)
{
//invio al browser la pagina privata
P(helloMsg) = "<h3>Buongiorno Admin!</h3>";
server.printP(helloMsg);
}
}
else
{
//creo una risposta http
//nel caso in cui si tenta un accesso
//no autorizzato
server.httpUnauthorized();
}
}
void setup()
{
//inizializzo la ethernet shield
Ethernet.begin(mac, ip);
//definisco funzione che gestisce
//la pagina principale del sito
webserver.setDefaultCommand(&defaultCmd);
webserver.addCommand("index.html", &defaultCmd);
//definisco la funzione che gestisce la pagina privata
webserver.addCommand("private.html", &privateCmd);
//inizializzo la libreria webduino
webserver.begin();
}
void loop()
{
char buff[64];
int len = 64;
webserver.processConnection(buff, &len);
}
[/c]
La libreria Webduino è molto flessibile e permette di realizzare applicazioni interessanti in modo molto veloce.
Related posts
3 Comments
Lascia un commento Annulla risposta
Questo sito usa Akismet per ridurre lo spam. Scopri come i tuoi dati vengono elaborati.
Articoli popolari
Sorry. No data so far.
.Net micro framework Arduino Arduino Webserver Domotica Flyport I2C IOT Netduino OpenPicus raspberry RTC Speed Test
Buongiorno, volevo farti i complimenti per gli ottimi lavori e per da disponibilità a condivederli con tutti noi. Volevo sapere se è possibile e come “fondere” i tuoi progetti ” Webduino Based Authentication. Accedere ad una pagina privata ” e ” Scheda relè remota con Arduino e Webduino ” per ottenere un controllo a distanza protetto.
Grazie e continua così
Stefano
Buongiorno, complimenti per tutti i tutorial disponibili! Ho una domanda: come si fa a far eseguire il logout, o comunque a far richiedere di nuovo il login quando si ricarica la pagina di questo progetto? Perchè se non si esce dal browser, esso rimane loggato! Grazie
Ciao
la base authentication non dispone di logout, l’unica cosa che si potrebbe fare è usare un pulsante che permette di spedire una pagina 401 unauthorized.