Как сделать так, чтобы админ временно стал другим пользователем?
У меня есть традиционное приложение Rails 4 с моделью User и Sorcery для аутентификации. Модель User имеет флаг "admin". Как лучше всего реализовать возможность для администраторов временно стать другим пользователем (чтобы увидеть, что видит пользователь, чтобы помочь отладить проблему), а затем вернуться к тому, чтобы стать их первоначальным пользователем с поддержкой администратора?
3 ответа
Вот реализация:
http://robots.thoughtbot.com/how-to-masquerade-as-another-user-to-see-how-they-use-yo
Я думаю, это было то, что вы искали
У меня нет опыта в этом вопросе, но, возможно, вы можете добавить флаг суперпользователя к вашей модели пользователя. Если вы суперпользователь, вы можете настроить флаг администратора. Единственный смысл суперпользователя - просто иметь возможность включать или выключать права администратора. Теперь вы можете переключаться между тем, чтобы быть пользователем или администратором, и видеть то, что видит пользователь. Когда вы закончите, вы включите администратор и вернете свой интерфейс администратора.
Это будет работать, но я не знаю, является ли это лучшим решением для вашего случая использования. Просто теория крафта здесь.:)
Я не знаю о rails, но в Unix ваш исполняемый файл должен иметь возможность переключаться между пользовательскими режимами. Это делается путем установки бита 's' в ваших исполняемых файлах и установки владельца и / или группы на то, что требуется для выполнения того, что вы хотите, чтобы приложение было способно. (т. е. чаще всего вы используете root в качестве владельца и srwxr-xr-x в качестве разрешений, а это 4755 в качестве номера режима).
Если у вас есть это, ваше приложение может использовать функцию setuid(<uid>)
, Если вы используете root,
Под Linux у вас есть seteuid()
, setfsuid()
, а также setreuid()
также.
Чтобы убедиться, что вы все делаете правильно, я предлагаю вам прочитать соответствующие страницы руководства.