Arduino:Примеры/Web Authentication: различия между версиями
Материал из Онлайн справочника
Перейти к навигацииПерейти к поиску
Нет описания правки |
Нет описания правки |
||
Строка 117: | Строка 117: | ||
<references /> | <references /> | ||
{{Навигационная таблица/Портал/Arduino}} | |||
[[Категория:Пример]] | [[Категория:Пример]] | ||
[[Категория:Примеры]] | [[Категория:Примеры]] | ||
[[Категория:Пример программирования Arduino]] | [[Категория:Пример программирования Arduino]] | ||
[[Категория:Примеры программирования Arduino]] | [[Категория:Примеры программирования Arduino]] |
Текущая версия от 12:39, 8 июля 2023
Содержание | Знакомство с Arduino | Продукты | Основы | Справочник языка Arduino | Примеры | Библиотеки | Хакинг | Изменения | Сравнение языков Arduino и Processing |
Перевод: Максим Кузьмин
Проверка/Оформление/Редактирование: Мякишев Е.А.
HTTP-аутентификация[1]
Этот пример показывает, как при помощи библиотеки Webduino осуществить HTTP-аутентификацию двух пользователей – обычного и администратора.
Код
/* HTTP-аутентификация (Webduino) */
/* Этот пример написан с учетом того, что вы знакомы с основами
* библиотеки Ethernet (особенно с настройкой адресов IP и MAC),
* а также с основами Webduino. И для начала лучше загляните в пример
* «HelloWorld», если еще не сделали этого. */
/* Вы можете поменять область аутентификации, указав
* WEBDUINO_AUTH_REALM перед подключением WebServer.h */
#define WEBDUINO_AUTH_REALM "Webduino Authentication Example"
#include "SPI.h"
#include "Ethernet.h"
#include "WebServer.h"
/* ПОСТАВЬТЕ ЗДЕСЬ СОБСТВЕННОЕ ЗНАЧЕНИЕ. MAC-адрес должен отличаться
* от других девайсов в сети. Если MAC-адрес Ethernet-модуля совпадет
* с другим MAC-адресом, это повлечет проблемы с получением пакетов.
*/
static uint8_t mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
/* ВЫСТАВЬТЕ ТУТ ЗНАЧЕНИЕ, СООТВЕТСТВУЮЩЕЕ СЕТИ ВАШЕГО ХОСТА.
* Большинство сетей находятся в диапазонах 192.168.0.XXX
* или 192.168.1.XXX. Выберите адрес, который не используется
* и не присваивается автоматически DHCP-сервисом, к которому
* подключен ваш роутер. */
static uint8_t ip[] = { 192, 168, 1, 210 };
/* Это создает экземпляр веб-сервера. Как PREFIX указываем "",
* благодаря чему все страницы будут в корне сервера. */
#define PREFIX ""
WebServer webserver(PREFIX, 80);
void defaultCmd(WebServer &server, WebServer::ConnectionType type, char *, bool)
{
server.httpSuccess();
if (type != WebServer::HEAD)
{
P(helloMsg) = "<h1>Hello, World!</h1><a href=\"private.html\">Private page</a>";
server.printP(helloMsg);
}
}
void privateCmd(WebServer &server, WebServer::ConnectionType type, char *, bool)
{
/* Если пользователь запросил эту страницу при помощи
* следующих данных: username = user, password = user,
* то показываем страницу, говорящую «Hello User».
* Эти данные должны быть объединены двоеточием (примерно так:
* «username:password») и зашифрованы при помощи Base64, но это
* нужно делать вне Arduino, чтобы сэкономить вычислительные
* ресурсы. Другими словами, «dXNlcjp1c2Vy» – это «user:user»,
* зашифрованное в Base64. Если вам нужна динамическая смена
* имени/пароля, поищите в интернете библиотеку Base64. */
if (server.checkCredentials("dXNlcjp1c2Vy"))
{
server.httpSuccess();
if (type != WebServer::HEAD)
{
P(helloMsg) = "<h1>Hello User</h1>";
server.printP(helloMsg);
}
}
/* Если пользователь запросил эту страницу при помощи
* следующих данных: username = admin, password = admin,
* то показываем страницу, говорящую «Hello Admin».
* Другими словами, «YWRtaW46YWRtaW4=» – это «admin:admin. */
else if (server.checkCredentials("YWRtaW46YWRtaW4="))
{
server.httpSuccess();
if (type != WebServer::HEAD)
{
P(helloMsg) = "<h1>Hello Admin</h1>";
server.printP(helloMsg);
}
}
else
{
/* отправляем обратно ошибку 401, запрашивая, чтобы пользователь снова вписал свои данные. */
server.httpUnauthorized();
}
}
void setup()
{
Ethernet.begin(mac, ip);
webserver.setDefaultCommand(&defaultCmd);
webserver.addCommand("index.html", &defaultCmd);
webserver.addCommand("private.html", &privateCmd);
webserver.begin();
}
void loop()
{
char buff[64];
int len = 64;
/* вечно обрабатываем входящие соединения (по одному за раз):*/
webserver.processConnection(buff, &len);
}
См.также
Внешние ссылки
Arduino продукты | |
---|---|
Начальный уровень | Arduino Uno • Arduino Leonardo • Arduino 101 • Arduino Robot • Arduino Esplora • Arduino Micro • Arduino Nano • Arduino Mini • Arduino Starter Kit • Arduino Basic Kit • MKR2UNO • TFT-дисплей Arduino |
Продвинутые функции | Arduino Mega 2560 • Arduino Zero • Arduino Due • Arduino Mega ADK • Arduino Pro • Arduino Motor Shield • Arduino USB Host Shield • Arduino Proto Shield • MKR Proto Shield • MKR Proto Large Shield • Arduino ISP • Arduino USB 2 Serial Micro • Arduino Mini USB Serial Adapter |
Интернет вещей | Arduino Yun • Arduino Ethernet • Arduino MKR1000 • Arduino WiFi 101 Shield • Arduino GSM Shield V2 • Arduino WiFi Shield • Arduino Wireless SD Shield • Arduino Wireless Proto Shield • Arduino Ethernet Shield V2 • Arduino Yun Shield • Arduino MKR1000 Bundle |
Носимые устройства | Arduino Gemma • Lilypad Arduino Simple • Lilypad Arduino Main Board • Lilypad Arduino USB • LilyPad Arduino SimpleSnap |
3D-печать | Arduino Materia 101 |
Устаревшие устройства | - |
Примеры Arduino | |
---|---|
Стандартные функции | |
Основы |
|
Цифровой сигнал |
|
Аналоговый сигнал |
|
Связь |
|
Управляющие структуры |
|
Датчики |
|
Дисплей |
Примеры, объясняющие основы управления дисплеем:
|
Строки |
|
USB (для Leonardo, Micro и Due плат) |
В этой секции имеют место примеры, которые демонстрируют использование библиотек, уникальных для плат Leonardo, Micro и Due.
|
Клавиатура |
|
Мышь |
|
Разное |
Категории:
- Страницы, использующие повторяющиеся аргументы в вызовах шаблонов
- Справочник языка Arduino
- Arduino
- Перевод от Сubewriter
- Проверка:myagkij
- Оформление:myagkij
- Редактирование:myagkij
- Страницы, где используется шаблон "Навигационная таблица/Телепорт"
- Страницы с телепортом
- Пример
- Примеры
- Пример программирования Arduino
- Примеры программирования Arduino