Помогите с кодом авторизации для Arduino Ethernet

Тема в разделе "Проводная и беспроводная связь", создана пользователем Cepera, 16 июн 2014.

  1. Cepera

    Cepera Нуб

    Понравилась сама идея ардуины, стал ковыряться с ней, на данном этапе хочу сделать авторизацию при подключении к ардуине, но поскольку довольно таки далек от программирования, и изучать начал вот только только))) хочу попросить вашей помощи, может кто нибудь поможет.

    Смысл такой что вбить логин пароль в память ардуинки и при подключении к ней если ты правильно указал эти самые лог/пароль, то она показывает свое состояние или допускает до чего то, ну там уже особо не важно.
     
  2. ANV

    ANV Гуру

    Логин на Ардуину через какой интерфейс?
     
  3. Cepera

    Cepera Нуб

    ну подключаюсь к ардуине через витую пару, и авторизация через веб интерфейс нужна, HTTP.

    само подключение к ардуине происходит, захожу по ip адресу. На данный момент дошел что ардуина мне выводит вот такой вот экранчик:

    [​IMG]


    вот собственно его код, но как сделать чтобы ардуина сравнивала данные вбитые пользователем в поля с истинным логином и паролем? и после этого открывала доступ к чему либо

    // Формируем HTML
    client.println("HTTP/1.1 200 OK");
    client.println("Content-Type: text/html");
    client.println();
    client.println("<head> ");
    client.println("<meta http-equiv='Content-Type' content='text/html; charset=utf-8' /> ");
    client.println("<title> Arduino</title>");
    client.println("</head> ");
    client.println("<body align=center>");
    client.println("<h3>Пройдите авторизацию</h3>");
    client.println("<br>");
    client.println("Логин: <input type=text name=a value='' maxlength=20>");
    client.println("<br>");
    client.println("<br>");
    client.println("Пароль: <input type=password name=b value='' maxlength=20>");
    client.println("<br>");
    client.println("<br>");
    client.println("<input type=submit name=s value=Войти>");
    client.println("<br>");
    client.println("<br>");

    еще так понял что наверное нужно использовать <form> и get или post, вообщем в голове все перемешивается, но пытаюсь разобраться :)
     
    Последнее редактирование: 16 июн 2014
  4. Unixon

    Unixon Оракул Модератор

    Естественно нужно! А со стороны ардуины потом разбирать http ответ.
    Вот, например, тут расписано, что и как передается.
     
  5. Vetrinus

    Vetrinus Гик

    Вовремя, конечно, но мало ли))) Вам нужно смотреть в запросе хеш авторизации Authorization: Basic <encoded-key>. Если его нет, значит отправляем клиенту такой заголовок:
    HTTP/1.0 401Unauthorized
    WWW-Authenticate:Basic realm="Arduino control panel"
    Этот ответ заставит браузер отобразить форму авторизации.
    Вводите логин пароль, эти данные шифруются в base64 и добавляются в тело запроса. Чтобы понять, какой именно хеш будет, найдите base 64 онлайн конвертер и введите данные в виде login:password