Linux is working. The future is open.
Есть у меня проект, написанный на Django, в нем регистрируются пользователи чтобы получать определенные услуги. В процессе работы код этих услуг должен был аутентифицировать пользователя, проверить, зарегистрирован ли он на сайте (в Django) или нет, и если зарегистрирован - верный ли пароль он вводит. Сначала у меня была идея лезть напрямую в базу данных сайта, придумать как получать нужный хеш пароля и сравнивать его с тем, что лежит в базе.
Поломав голову, я решил пойти по другому и, как оказалось, правильному пути! Думаю, многие знают про ./manage shell джанги. Вопрос стоял в том, как его получить из системы, к тому же если python в виртуальном окружении. Я нашел решение, заготовкой делюсь с Вами:
#!/usr/bin/env /var/django/env/my_project/bin/python #coding:utf8 # # Проверка пары логин-пароль пользователя, зарегистрированного в Django. # Логин и пароль передаются параметрами в прямом виде # import os import sys sys.path.append("/var/django/project/my_project") os.environ.setdefault("DJANGO_SETTINGS_MODULE", "my_project.settings") from django.contrib.auth.models import User username = sys.argv[1] plainpass = sys.argv[2] try: u = User.objects.get(username=username) if u.check_password(plainpass): sys.stdout.write("true") else: sys.stdout.write("false") except: sys.stdout.write("false")