2012-05-31 2 views
1

Мы находимся в процессе разработки функции для сайта, которая должна позволить некоторым сотрудникам просматривать наш сайт в качестве другого зарегистрированного пользователя. Мне бы очень хотелось услышать от людей, которые уже думали об этом виде функциональности или реализовали что-то вроде этого.Как бы вы реализовали функцию «Просмотр сайта как другого пользователя»?

Это должно быть сообщество wiki. И я буду отмечать его как один, когда это будет возможно.

ответ

1

я видел два пути:

  1. параметр URL '= changeToUser входа. фильтр проверяет, есть ли у вас достаточное разрешение на изменение вашей личности, а затем переключается, скажем, ваш директор весной. если вам нужно, вы можете добавить флаг к сеансу, который указывает ваш реальный идентификатор, и что у вас есть права на повторное включение. без флага вы не сможете снова переключиться без выхода из системы. Этот метод чрезвычайно полезен при тестировании приложения потока (1-й пользователь делает sth, затем 2-й пользователь отвечает и т. Д.). на сервере dev/uat ваше приложение может отображать правильные ссылки, которые позволяют вам переключаться на нужного пользователя одним щелчком мыши

  2. вы меняете свой идентификатор во время входа в систему. my-login # login-of-user-i - притворяться и ваш реальный пароль. вы просто добавить еще один аутентификатор в цепи, перед вашим Ldap идентифицирующего (или что вы используете)

второй удобен для небольшого приложения без потоков/jbpm процессов и когда вы предпочитаете использовать эту функцию, чтобы сделать что-то, потому что реальное пользователь болен/не работает и не может войти в систему на данный момент. но когда вы хотите протестировать приложение потока, которое требует много переключателей, то первое решение будет лучше, особенно с визуализированными ссылками.

1

Я делал это двумя способами в прошлом.

Проще всего было позволить людям с достаточной привилегией войти в систему как произвольный пользователь без пароля. Это всего лишь входной вход в систему, полностью заменяющий кого-то, с кем вы притворяетесь. Вы возвращаетесь к себе, выйдя из системы и снова войдя в систему.

Другой должен был держать флаг в сеансе, говоря «Я действительно пользователь ABC» и проверить этот флаг на соответствующих страницах администрирования (механизм не имеет значения, но обычно может быть сделан умным и практически невидимым в большинстве фреймворков) но переключите пользователя сеанса на пользователя XYZ. Тот же механизм «пропустить пароль» будет использоваться как в первом.

Последний является более сложным, но устраняет необходимость выхода из системы/входа в систему и позволяет создавать интересные трюки, например, запускать сайт внутри iframe и оставлять меню администратора видимым для «выпадения» специального режима и т. Д.

+0

Благодарим вас за ответ. Под «пользователем с привилегией» вы подразумеваете нечто вроде ролей или претензий? if (manager) показывает дополнительный элемент ui, который позволяет второй логин? Можете ли вы связать сайты, на которых вы реализовали такой вторичный вход в систему? –

+0

@AlexanderTaran Ни один из публичных не предоставит вам функциональность, поскольку у вас не будет привилегий, поэтому нет. Все они основаны на ролях или флагах: «У меня есть права на вход в систему как на другого пользователя», многие из них «имеют ли я права входа в систему как пользователь определенного типа». Да, всегда существовал элемент пользовательского интерфейса для функциональности, иначе было бы действительно реально использовать функциональность. –

Смежные вопросы