Информация
Настройка
Новости
Контакты
Новинка
Распродажа
Оплата
Доставка
Загрузки
  • Прошивки
    • WinBox
    • RouterOS
    • Мобильные приложения MikroTik
    • Архив
  • Changelogs
  • RouterOS
  • Мобильные приложения MikroTik
  • Архив
Форум
Услуги
  • Внедрение
  • Настройка
  • Поддержка
  • Ремонт
    info@mikrotik.moscow
    +7 495 320-55-52
    Заказать звонок
    Mikrotik.moscow
    Каталог
    • Акции
      Акции
    • Маршрутизаторы
      Маршрутизаторы
    • Коммутаторы
      Коммутаторы
    • Радиомосты и уличные точки доступа
      Радиомосты и уличные точки доступа
    • Wi-Fi для дома и офиса
      Wi-Fi для дома и офиса
    • LTE/5G
      LTE/5G
    • Powerline адаптеры
      Powerline адаптеры
    • IoT устройства
      IoT устройства
    • Оборудование 60 ГГц
      Оборудование 60 ГГц
    • Материнские платы RouterBOARD
      Материнские платы RouterBOARD
    • Корпуса
      Корпуса
    • Интерфейсы
      Интерфейсы
    • SFP/QSFP трансиверы
      SFP/QSFP трансиверы
    • Аксессуары
      Аксессуары
    • Антенны
      Антенны
    • Архив
      Архив
    Войти
    0 Сравнение
    0 Избранное
    0 Корзина
    Скачать WinBox Скачать Прошивки Форум > RouterOS Форум > SwOS Форум > Железо
    Mikrotik.moscow
    Каталог
    Войти
    0 Сравнение
    0 Избранное
    0 Корзина
    Mikrotik.moscow
    Телефоны
    +7 495 320-55-52
    Заказать звонок
    0
    0
    0
    Mikrotik.moscow
    • +7 495 320-55-52
      • Назад
      • Телефоны
      • +7 495 320-55-52
      • Заказать звонок
    • info@mikrotik.moscow
    • г. Москва, ул. Бакунинская, 84
    • Пн-Пт: 09-00 до 18-00
      Сб-Вс: выходной


    • Кабинет
    • 0 Сравнение
    • 0 Избранное
    • 0 Корзина
    Главная
    Форум
    RouterOS
    Подключение к HotSpot с использованием asp.net.

    Подключение к HotSpot с использованием asp.net.

    Форумы: RouterOS, Аппаратное обеспечение, SwOS, Обратная связь, Объявления, Сторонние инструменты
    Поиск  Пользователи  Правила  Войти
    Страницы: 1
    RSS
    Подключение к HotSpot с использованием asp.net., RouterOS
     
    zaid
    Guest
    #1
    0
    09.12.2013 07:38:00
    Привет, класс Mikrotik содержит функцию логина для администрирования роутера. Не мог бы кто-нибудь предоставить аналогичный, но для валидации логина пользователя hotspot? Было бы здорово, если это будет код на C#. Спасибо.
     
     
     
    boen_robot
    Guest
    #2
    0
    09.12.2013 14:52:00
    Нет способа сделать это с использованием API протокола в целом. Ни с помощью SSH. Единственный вариант – чтобы само устройство-клиент сделало HTTP-запрос к роутеру (с именем пользователя и паролем от хотспота). Ты можешь отправить такой запрос в фоновом режиме с помощью AJAX, но это не меняет того факта, что запрос должен быть сделан между устройством-клиентом и роутером, а не то, что тебе нужно – обмен между сервером и роутером, в результате которого клиент получает только куки. Это возможно в теории, но RouterOS это пока не поддерживает.
     
     
     
    zaid
    Guest
    #3
    0
    09.12.2013 15:29:00
    Спасибо за ответ… а что насчет PHP-кода, который сбрасывает пароль: http://wiki.mikrotik.com/wiki/API_PHP_package (“Форма забытого пароля” для пользователя хотспота)… мне нужно перенаправлять пользователя хотспота со стандартной страницы входа в хотспот роутера на мою страницу входа, а затем проверять имя пользователя и пароль через роутер (пользователей хотспота в роутере). Если имя пользователя и пароль не подтверждены, код должен создать нового пользователя хотспота и отправить детали по SMS пользователю. У меня есть часть по созданию пользователя хотспота, но отсутствует информация о том, как реализовать проверку входа. Еще раз спасибо…
     
     
     
    boen_robot
    Guest
    #4
    0
    09.12.2013 16:02:00
    Что насчет PHP-кода, который сбрасывает пароль: > http://wiki.mikrotik.com/wiki/API_PHP_package > (“Форма забытого пароля” для пользователя hotspot)... Что насчет этого? Он не осуществляет вход в систему. Он просто проверяет, существует ли пользователь с указанным email и “телефоном” (ну, комментарий реально...), и устанавливает пароль, если такой существует. Ты можешь это сделать, но ты не можешь выполнить фактическую процедуру входа в систему через API (в смысле, добавить пользователя в список активных пользователей). Мне нужно перенаправить пользователя hotspot с дефолтной страницы входа в hotspot на моем роутере на мою страницу входа, а затем проверять имя пользователя и пароль через роутер (пользователи hotspot в роутере). Если имя пользователя и пароль не прошли проверку, код должен создать нового пользователя hotspot и отправить детали по SMS пользователю. У меня есть часть, отвечающая за создание пользователя hotspot, но отсутствует часть, отвечающая за проверку входа. Не уверен, можно ли автоматизировать создание при таком условии, но точно можно сделать это "по требованию". То есть, сделать "страница регистрации", где пользователь указывает свой номер телефона, и ты генерируешь имя пользователя и пароль, который затем отправляешь по SMS… или где ты также позволяешь им выбрать желаемое имя пользователя, и проверяешь, существует ли оно (но помни, злоумышленники будут этим пользоваться, чтобы облегчить взлом существующих аккаунтов).
     
     
     
    zaid
    Guest
    #5
    0
    10.12.2013 03:18:00
    "Пусть пользователи выбирают желаемое имя пользователя и проверяют, занято ли оно." Как это сделать, а затем как аутентифицировать пользователей точки доступа и разрешить им использовать интернет… Я имею в виду, если я перенаправляю пользователей с логина точки доступа по умолчанию (на роутере) на мою страницу входа на моем веб-сервере. Как должна быть реализована аутентификация, если пользователь уже есть в списке пользователей точки доступа роутера? Какой-нибудь код… Спасибо.
     
     
     
    boen_robot
    Guest
    #6
    0
    10.12.2013 14:09:00
    И вот как это работает: сначала нужно аутентифицировать пользователей точки доступа и предоставить им доступ в интернет… После регистрации пользователь может вернуться на страницу входа и войти, используя свое новое имя пользователя и пароль. Как уже говорилось, вы не можете автоматически авторизовать их сами. Они должны сделать это самостоятельно. "Позвольте им выбрать желаемое имя пользователя и проверьте, существует ли оно" — как это сделать? Вы отправляете запрос "print" с запросом и проверяете, возвращается ли ноль. Если да, то пользователя не существует. С точки зрения протокола это выглядит так: /ip/hotspot/user/print
    =count-only=
    ?name=usernameToBeChecked, где “usernameToBeChecked” – желаемое имя пользователя, и в ответе !done
    =ret=1 (если “ret” равно “1”, имя пользователя существует, а если “0”, то нет). Используя пакет PHP, это будет выглядеть так: <?php
    use PEAR2\Net\RouterOS;
    require_once 'PEAR2/Autoload.php';

    if (isset($_GET['act'])) {//This is merely to ensure the form was submitted.

       $errors = array();
       try {
           //Adjust RouterOS IP, username and password accordingly.
           $client = new RouterOS\Client('192.168.0.1', 'admin', 'password');
       } catch (Exception $e) {
           $errors[] = 'We are sorry, but we are unable to register you at this time. Please try again later.';
       }

       //This is just one approach that allows you to create a multi purpose form,
       //with ping being just one action.
       if ($_GET['act'] === 'reg') {
           if (!isset($_POST['username'])) {
               $errors[] = 'You must provide a desired username.';
           }

           if (!isset($_POST['password'])) {
               $errors[] = 'You must provide a password.';
           }

           if (!isset($_POST['password2'])) {
               $errors[] = 'You must confirm your password.';
           }

           if ($_POST['password'] !== $_POST['password2']) {
               $errors[] = 'Passwords do not match.';
           }


           if (empty($errors)) {
               //We are connected to the router and we have a valid username and password.
               //Check for existence of user NOW, and register them if they don't exist.
               $printRequest = new RouterOS\Request(
                   '/ip hotspot user print count-only=""',
                   RouterOS\Query::where('name', $_POST['username'])
               );
               if ($client->sendSync($printRequest)->getArgument('ret') != '0') {
                   $error[] = 'The desired username is already taken.';
               }

               if (empty($errors)) {
                   $addRequest = new RouterOS\Request('/ip hotspot user add profile=profile1');
                   $addRequest
                       ->setArgument('name', $_POST['username'])
                       ->setArgument('password', $_POST['password']);
                   if (count($client->sendSync($addRequest)) > 1) {
                       $error[] = 'We failed to register you for some unknown reason. Please contact us about it.';
                   }
               }
           }
       }
    }
    ?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
       <head>
           <title>User registration</title>
           <style>
               #errors {background-color:darkred;color:white;}
               #success {background-color:darkgreen;color:white;}
           </style>
       </head>
       <body>
           <div>
           <?php
    if (isset($_POST['act'])) {//There's no need to execute this if the form was not submitted yet.
       if (empty($errors) {
           echo '<div id="success">You are now registered!</div>';
       } else {
           echo '<div id="errors">There were errors when trying to register you:
      ';
             foreach ($errors as $error) {
                 echo '
    • ', $error '';
             }
             echo '
    </div>';
       }
    }
           ?>
               <form action="" method="post">
                   

    •                        <label for="username">Username:</label>
                             <input type="text" id="username" name="username" value="<?php
                                 if (isset($_POST['username'])) {
                                     echo htmlspecialchars($_POST['username']);
                                 }
                             ?>" />
                         
                         

    •                        <label for="password">Password:</label>
                             <input type="password" id="password" name="password" value="" />
                         
                         

    •                        <label for="password2">Confirm password:</label>
                             <input type="password" id="password2" name="password2" value="" />
                         
                         

    •                        <input type="submit" id="act" name="act" value="reg" />
                         
                     
               </form>
           </div>
       </body>
    </html> (P.S. A few of the critical lines will not be needed in the upcoming version, in favor of more compact one liners, but this is what you can use today with the exact same effect, and which will still work the same then as well)
     
     
     
    zaid
    Guest
    #7
    0
    10.12.2013 14:43:00
    Спасибо за быстрый ответ. Извини, я вообще ничего не знаю о Mikrotik, но мне нужно добавить этот уровень аутентификации. Надеюсь, это будет последний вопрос. Теперь как отправлять имя пользователя и пароль на роутер для аутентификации (отправлять запрос на аутентификацию имени пользователя и пароля с моей страницы на роутер)? То есть, какой синтаксис кода на C#, VB.Net, C или C++, но не на PHP? Заранее спасибо…
     
     
     
    boen_robot
    Guest
    #8
    0
    10.12.2013 15:10:00
    Поскольку запрос должен инициировать браузер пользователя, вам нужно перенаправить его на страницу входа, передав учетные данные. Вы не можете проверить, вошел ли пользователь успешно, но если перенаправить его на страницу входа, используя сгенерированные для него учетные данные, можно с уверенностью предположить, что он вошел успешно. Для перенаправления используйте метод System.Web.HttpResponse.Redirect(string, bool) (с использованием System.Web.HttpUtility.UrlEncode(string) для переменных, ради безопасности). Или, в более современном коде: System.Web.HttpResponse.Redirect("http://IP-or-DNS-name-of-router/login?username=" + System.Web.HttpUtility.UrlEncode(username) + "&password=" + System.Web.HttpUtility.UrlEncode(password), true);
     
     
     
    zaid
    Guest
    #9
    0
    22.01.2014 09:30:00
    Привет, как мне проверить, что пользователь ввел корректное имя пользователя и пароль после использования (System.Web.HttpResponse.Redirect)? Есть какие-то возвращаемые значения? Мне нужно перенаправлять проверенных пользователей на google.com. Заранее спасибо.
     
     
     
    boen_robot
    Guest
    #10
    0
    22.01.2014 11:42:00
    Как я уже говорил, проверить, вошли ли они успешно, ты не можешь, но если перенаправить их на страницу входа, используя данные, которые ты для них сгенерировал, можно с уверенностью предположить, что они вошли. Думаю, ты можешь настроить роутер так, чтобы он перенаправлял на google.com после успешной авторизации, изменив файл alogin.html и добавив туда `<meta http-equiv="Refresh" content="1; url=http://google.com" />`.
     
     
     
    zaid
    Guest
    #11
    0
    23.01.2014 04:21:00
    Привет, а как насчёт неверного имени пользователя или пароля? Мне нужно что-то вроде: `if(valid) { redirect(“ google.com ”) } else { message box(“invalid user or pass”) create_new_user_form.Open(); }` Спасибо.
     
     
     
    boen_robot
    Guest
    #12
    0
    23.01.2014 10:54:00
    Смотри эту страницу в руководстве. Ты можешь добавить/изменить “flogin.html” в папке hotspot, чтобы это была HTML-страница, которая будет отображаться при неудаче. Как и в случае с alogin.html, ты можешь сделать так, чтобы она перенаправляла на другую страницу, например, обратно на страницу входа, плюс аргумент, чтобы вызвать сообщение об ошибке.
     
     
     
    zaid
    Guest
    #13
    0
    23.01.2014 12:25:00
    Большое спасибо тебе, boen_robot... Теперь все понятно.
     
     
     
    Страницы: 1
    Читают тему
    +7 495 320-55-52
    info@mikrotik.moscow
    Электрозаводская, Бауманская
    Москва, ул. Бакунинская, 84с21
    Конфиденциальность Оферта
    © 2025 «Mikrotik.Moscow»
    Главная Каталог 0 Корзина 0 Избранные Кабинет 0 Сравнение Акции Контакты Услуги Бренды Отзывы Компания Лицензии Документы Реквизиты Поиск Блог Обзоры