Я не могу ответить на ваш вопрос о карте сайта, но я внедрил подобное решение в одной из наших систем, где я могу точно увидеть, что видит конечный пользователь, выдав себя за него. Я делал это в основном для устранения неполадок, чтобы, когда они сообщали мне о проблеме (например, о чем-то не хватало в их представлении), я мог присоединиться к ним и точно понять, о чем они говорят.
То, как я это сделал, что, по общему признанию, немного грубовато, заключалось в том, чтобы в моей базе данных была таблица олицетворения, содержащая имя пользователя, который выполняет олицетворение, и имя пользователя, которого они хотят олицетворять.
Я добавил некоторый код переопределения, чтобы, когда пользователь впервые заходит на страницу (он использует проверку подлинности Windows), он проверял, есть ли у этого пользователя набор олицетворения в таблице, а затем помещал этот идентификатор пользователя в объект в состояние сеанса. Если бы не было олицетворения, он поместил бы фактический идентификатор пользователя в этот же объект.
Чтобы я не мог делать что-то с данными пользователя как с ними, в этом объекте есть два свойства: одно для logon_name, которое используется системой для настройки контента, и другое с именем NameForLog, которое используется, когда регистрация любых действий. Все мои действия будут зарегистрированы как я.
Все области на сайте, которые отображают пользовательский контент, смотрят на этот объект сеанса, поэтому они всегда будут использовать олицетворенный идентификатор и, следовательно, всегда будут показывать мне то, что видит пользователь. Помимо первой страницы и регистрационного кода, он даже не знает, что со мной это имеет дело.
Это не самое чистое решение, но оно хорошо сработало для меня.