Уведомления

Группа в Telegram: @pythonsu
  • Начало
  • » Django
  • » Эмуляция режима пользователя для superuser [RSS Feed]

#1 Окт. 26, 2017 16:39:00

Elaphe
Зарегистрирован: 2015-02-04
Сообщения: 125
Репутация: +  5  -
Профиль   Отправить e-mail  

Эмуляция режима пользователя для superuser

Стоит такая творческая задача.
Есть пользователь с правами superuser
Хочется дать суперюзеру возможность выбирать из-под какого пользователя работать - и после этого отображать сайт так, как будто он и есть этот выбранные пользователь. Чтобы от имени этого пользователя вносить изменения, все права были как у него и т.д.
Для аутентификации используется TokenAuthentication (мы используем Django Rest Framework)
Мне пока приходят в голову идеи всяких костылей типа сохранить в параметрах сессии ID суперюзера (или даже просто параметр типа superuser=True), а в заголовок запроса подставить токен пользователя.
Но:
1) беспокоят вопросы безопасности
2) не оставляет мысль, что я изобретаю велосипед
Может, знает кто-нибудь какие-то хорошие, изящные и безопасные способы так сделать (в идеале работающие не просто с Django, а с DRF)?

Отредактировано Elaphe (Окт. 26, 2017 16:39:12)

Офлайн

#2 Окт. 26, 2017 16:46:49

Elaphe
Зарегистрирован: 2015-02-04
Сообщения: 125
Репутация: +  5  -
Профиль   Отправить e-mail  

Эмуляция режима пользователя для superuser

Пока моя основная идея - сделать через сессии и middleware
При эмуляции в сессии создается параметр, скажем user_emulation='emulated_user'
middleware проверяет сессию на наличие этого параметра.
Если он есть, то при запросе - подставляет в реквест вместо суперюзера emulated_user
Если при респонте - вместо emulated_user подставляет назад суперюзера.
Реально?

Офлайн

  • Начало
  • » Django
  • » Эмуляция режима пользователя для superuser[RSS Feed]

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version