Я создаю инструмент онлайн-опроса.
Как администратор, я хотел бы видеть ответы пользователей, а также иметь возможность отвечать от их имени. Система получает ответы пользователей и другую информацию, основанную на его / ее имени пользователя, при входе в систему с использованием встроенного поставщика членства.
В настоящее время есть три роли: администратор, модератор и ответчик
Если я хочу показать администратору список пользователей,
как можно создать «черный ход» для администратора, чтобы он мог «войти» как пользователь, увидеть ответы пользователей и т. Д.? (Точно так же, как пользователь сможет, если он вошел в свою учетную запись).
При ответе и получении ответов система привязывается к `User.Identity.Name
Мое предложение о том, как решить эту проблему:
В настоящее время, когда я хочу получить ответы пользователей, я использую следующий код:
Firma_ID = db.Firma.Single(x => x.CVR_nummer == User.Identity.Name).firma_id;
var answers = db.Tabelform_Answers.Where(x => x.question_id == model.Question_ID && x.respondent == Firma_ID);
Это потому, что у меня есть таблица с именем Firma, в которой есть столбец, ссылающийся на имя пользователя с именем CVR_Nummer. Затем я получаю все записи в таблице Tabelform_Answers, которые соответствуют question_id и Firma_ID (пользователи отвечают на конкретный вопрос).
Вместо использования `Firma_ID = db.Firma.Single (x => x.CVR_nummer == User.Identity.Name) .firma_id;
чтобы получить Firma_ID данного пользователя, я мог бы сохранить его в сеансе при входе в систему. Когда я хочу просмотреть ответы определенных пользователей от имени администратора, я бы просто изменил Firma_ID в сеансе. Изменение Firma_ID в сеансе будет разрешено только через контроллер, имеющий следующий код:
[Authorize(Roles = "Administrator")]
Кроме того, я бы установил время ожидания сеанса таким же, как и время аутентификации.
Может кто-нибудь сказать мне, какие плюсы и минусы этого решения? Существуют ли другие способы хранения «глобальной» переменной для сеанса? (Firma_ID)
Спасибо