Форум сайта python.su
Стоит такая творческая задача.
Есть пользователь с правами superuser
Хочется дать суперюзеру возможность выбирать из-под какого пользователя работать - и после этого отображать сайт так, как будто он и есть этот выбранные пользователь. Чтобы от имени этого пользователя вносить изменения, все права были как у него и т.д.
Для аутентификации используется TokenAuthentication (мы используем Django Rest Framework)
Мне пока приходят в голову идеи всяких костылей типа сохранить в параметрах сессии ID суперюзера (или даже просто параметр типа superuser=True), а в заголовок запроса подставить токен пользователя.
Но:
1) беспокоят вопросы безопасности
2) не оставляет мысль, что я изобретаю велосипед
Может, знает кто-нибудь какие-то хорошие, изящные и безопасные способы так сделать (в идеале работающие не просто с Django, а с DRF)?
Отредактировано Elaphe (Окт. 26, 2017 16:39:12)
Офлайн
Пока моя основная идея - сделать через сессии и middleware
При эмуляции в сессии создается параметр, скажем user_emulation='emulated_user'
middleware проверяет сессию на наличие этого параметра.
Если он есть, то при запросе - подставляет в реквест вместо суперюзера emulated_user
Если при респонте - вместо emulated_user подставляет назад суперюзера.
Реально?
Офлайн