Меню
Контакты
107023, Москва, пл. Журавлёва, 10с3, подъезд 31, офис 309
Пн-Пт: с 9-00 до 17-00   Сб-вс: выходной
Интернет-магазин
сетевого оборудования
Москва +7 (495) 103-41-03 +7 (915) 420-28-94
107023, Москва, пл. Журавлёва, 10с3, подъезд 31, офис 309
Пн-Пт: с 9-00 до 17-00   Сб-вс: выходной
Заказать звонок

MikroTik + DJANGO. Часть 4. Авторизация клиентов

 21 Авг 2012    MikroTik, Практика и программирование MikroTik

Мы создали учётные записи клиентов. Теперь необходимо дать им возможность авторизоваться и получать доступ к сети Интернет. В этом нам помогут файлы views.py и urls.py. Файл views.py содержит функции представления, то есть выводит различные данные на экран. Файл urls.py содержит список соответствия url адресов функциям представления.

 

Файл urls.py содержит следующее:

#Импортируем модули

from django.conf.urls.defaults import patterns, include, url

from wifiproject.views import * #Импортируем функции представления

# Uncomment the next two lines to enable the admin:

from django.contrib import admin

admin.autodiscover()

urlpatterns = patterns('',

    # Examples:

   

    ('^$', hello), #URL, отвечающий за отображение главной страницы. То есть когда клиент введет адрес в браузере https://asp24.com.ua/  сработает этот url и выполнится функция представления hello

    url(r'^auth_inet/$',auth_inet), #URL обрабатывает данные присланные пользователем через форму авторизации

    # Uncomment the admin/doc line below to enable admin documentation:

    url(r'^admin/doc/', include('django.contrib.admindocs.urls')),

    # Uncomment the next line to enable the admin:

    url(r'^admin/', include(admin.site.urls)),

)

 

Перейдём в файл views.py

#Подключаем модули

# -*- coding: utf-8 -*-

from wifizone.wifiproject.models import *

from django.http import HttpResponse

from django.template import loader, Context

from django.views.generic.simple import direct_to_template

from django.http import HttpResponseRedirect

#Функция представления hello очень проста. Всё что она делает, так это выводит на экран html-страницу index.html, в которой будет выводиться информация для клиентов и форма для авторизации

#Отображаем главную страницу

def hello(request):

    return direct_to_template(request, 'index.html')

 

 Авторизация клиентов. Рис.1. Главная страница

Рис.1. Главная страница

 

На рисунке 1 видна форма для ввода данных. В неё клиент должен ввести свой пароль, ip-адрес, полученный от устройства Mikrotik Routerboard, и mac-адрес своего беспроводного устройства.

<form action="/auth_inet/" method="POST" class="tabbody" enctype="multipart/form-data">{% csrf_token %}

action="/auth_inet/" – адрес куда будут отправлены, данные из формы.

method="POST" – метод с помощью которого, будут переданы данные.

{% csrf_token %} – защита от Cross-Site Request Forgery (межсайтовая подделка запроса) 

 

В принципе, уже можно было приступить к написанию функции представления, обрабатывающей данные, введённые пользователем и авторизующие его на устройстве Mikrotik Routerboard, но тогда пришлось бы данные для подключения к устройству Mikrotik Routerboard описывать в коде программы. Это не очень удобно, так как если изменятся данные, придётся редактировать код. Лучше создадим модель, которая будет отвечать за добавление данных об устройствах Mikrotik Routerboard.

 

В файл models.py добавляем модель MikroTik:

class MikroTik(models.Model):

#Поле для хранения ip-адреса устройства Mikrotik Routerboard

    ip_device = models.IPAddressField(verbose_name='ip адрес устройства')

#Поле для хранения информации о номере порта SSH службы

    port_device = models.IntegerField(verbose_name='Номер порта SSH службы')

#Логин администратора в устройстве Mikrotik Routerboard

    login_device = models.CharField(max_length=200, verbose_name='Логин администратора')

#Пароль администратора в устройстве Mikrotik Routerboard

    password_device = models.CharField(max_length=200, verbose_name='Пароль администратора')

    def __unicode__(self):

        return '%s ' % (self.ip_device)

 

В файл admin.py добавим

class MikroTikAdmin(admin.ModelAdmin):

#Определяем список полей, которые будут отображаться

    list_display = ('ip_device', 'port_device', 'login_device', 'password_device',)

#Подключаем модель к панели администратора

admin.site.register(MikroTik, MikroTikAdmin)

 

Авторизация клиентов. Рис.2. Таблица в базе данных

Рис.2. Таблица в базе данных

 

Создадим таблицу для модели в базе данных.

 

Авторизация клиентов. Рис.3. Модель MikroTik в разделе администратора

Рис.3. Модель MikroTik в разделе администратора

 

В результате, в панель администратора должен добавиться интерфейс для работы с моделью MikroTik.

 

 Авторизация клиентов. Рис.4. Данные об устройстве Mikrotik Routerboard

Рис.4.  Данные об  устройстве Mikrotik Routerboard

 

Добавляем данные для подключения к устройству  Mikrotik Routerboard.

 

Авторизация клиентов. Рис.5. Список устройств Mikrotik Routerboard

Рис.5. Список устройств Mikrotik Routerboard

 

Таким образом очень просто изменять данные об устройстве Mikrotik Routerboard и добавление новых устройств.

Евгений Рудченко специально для asp24