Реализация аутентификации пользователя в Django/Python
Давайте поговорим сегодня о том, как можно упростить администрирование и обеспечить двухфакторную авторизацию пользователей для более безопасной работы в Django.
Django – это фреймворк для работы с данными с использованием доступа через Web. Один из видов MVC — и называется MVT.
Нередко при реализации модуля администрирования в Django требуется передача пользователю информации о том, что ему дали доступ к серверу с указанием имени пользователя и пароля.
Для таких случаев возможна следующая реализация (использованы Centos 7, Python 2.7, Django 1.11):
- Администратор добавляет в систему пользователя, внутри системы генерируется пароль (который не доступен администратору);
- Имя и пароль пользователя отправляется на указанный для пользователя почтовый ящик;
- Пользователь вводит логин и пароль, ему на ящик или на телефон приходит код доступа, который нужно ввести для дальнейшей аутентификации.
Для реализации выполним следующие несложные действия:
Необходимо использовать свою модель пользователей, где будут добавлены поля (файл models.py):
- phone(Номер телефона),
- is_adm(пользователи поделены на админов и на обычных пользователей),
- number (временное хранение кода доступа)
Изменим вид формы заполнения данных о пользователе, где заранее установим значение пароля по умолчанию равным, например, ‘Aa12345678’(файл forms.py):
При открытии формы видно, что поле «Пароль» уже заполнено и недоступно для редактирования (серый цвет). Заносим остальные данные и сохраняем.
После нажатия кнопки «Сохранить», пользователь будет создан и ему на почту придет сообщение:
И мы видим, что пароль установлен отличный от пароля по умолчанию.
Это достигается при сохранении данных о пользователе (файл views.py — для нового пароля использован генератор случайных чисел):
Пользователь, получив сообщение, может уже входить в систему:
Для дальнейшей возможности авторизации у пользователя будет запрошен разовый код:
Который направлен на почтовый ящик:
Или на телефон (здесь имитация реализована через сервис портала smsc.ru, с подключением файла smsc_api.py):
Пользователь вводит код:
Код реализации для отправки кода авторизации в файле views.py:,
Для отправки почтовых сообщений вносим необходимые изменения в файл settings.py:
Таким образом, внеся небольшие дополнения в код, можно упростить администрирование и обеспечить двухфакторную авторизацию пользователей для более безопасной работы.