Как я могу подключиться как другой пользователь? - PullRequest
0 голосов
/ 15 мая 2019

Здравствуйте, я разработчик проекта django, и я должен проверить, что мой разработчик в порядке.

Для этого мне нужно подключиться как пользователь, но у меня есть только его электронная почта, а не пароль.Я нашел в table User это электронное письмо и пароль, но пароль начинается с этого: pbkdf2_sha256 ...

Так что я предполагаю, что пароль зашифрован.Есть ли способ сделать это проще?

Спасибо за помощь!

Ответы [ 2 ]

1 голос
/ 15 мая 2019

В зависимости от того, как хешируются пароли при создании новых пользователей, вы можете просто заменить хеш пользователя другим:

  1. Зайдите в базу данных и скопируйте пароль. Хэш пользователя, с которым вы хотите войти
  2. Храните этот хэш где-нибудь (он понадобится вам, чтобы отменить изменения)
  3. Скопировать хеш другого пользователя (пользователя, для которого вы знаете пароль)
  4. Вставьте хэш этого пользователя вместо хеша пользователя, которого вы хотите авторизовать

Если хэши сгенерированы одинаково, вы сможете войти с паролем другого пользователя.

Затем, когда вы закончите, отмените изменения в базе данных.

Надеюсь, это поможет.

0 голосов
/ 15 мая 2019

Пароли в django шифруются одним способом, поэтому их невозможно расшифровать, поэтому нет способа найти действительный пароль любого пользователя из таблицы пользователей в базе данных.
Если вы хотите войти в систему от имени другого пользователя без необходимостиЕсли вы знаете их пароль, то вы можете написать какой-нибудь сложный код для этого или использовать сторонний пакет.
django-hijack выглядит как хороший.В его документах есть хорошее объяснение того, как его использовать, поэтому я не собираюсь проходить через это здесь.Если вам не нравится этот пакет, вы можете просмотреть список пакетов для этой цели здесь на djangopackages и выбрать тот, который вам нравится.

Использование django-hijack:

Завершите установку и После установки * Сначала выполните шаги 1016 *.

  • Отправьте запрос на /hijack/<user_id>, где <user_id> - столбец id таблицы user.Если вы не обновили идентификатор поля для пользователя модели, это будет 1, 2, 3, .... Таким образом, URL будет похож на /hijack/1/

  • Сделать запрос на публикациюна /hijack/username/<username>, если вы хотите перехватить имя пользователя.например./hijack/username/awesome_username/

  • Сделайте почтовый запрос на /hijack/email/<user email>/, если вы хотите перехватить по электронной почте пользователя.например./hijack/email/awesome@email.com/

После отправки запроса на один из этих URL-адресов в качестве суперпользователя вы будете перенаправлены на указанный HIJACK_LOGIN_REDIRECT_URL в settings.py

Я не уверен, будет ли django-hijack работать на Python 3 или более новых версиях Django.Если это не работает, попробуйте django-impersonate , который аналогичным образом предоставляет те же функции и официально поддерживает python 3.6+ и django 1.11 +

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...