ASP-MVC: экземпляр объекта потерян при перенаправлении после авторизации - PullRequest
2 голосов
/ 25 января 2009

У меня есть атрибут «Авторизовать» в действии, который связывает данные формы.

Если пользователь отправляет форму, но не авторизован, появляется приглашение для входа. После входа в систему пользователь перенаправляется правильно, но модель является нулевой.

Как с этим справиться?

Ответы [ 3 ]

2 голосов
/ 01 февраля 2009

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

1 голос
/ 01 февраля 2009

Одна вещь, о которой я думал, но никогда не пытался, это отображать приглашение на вход в систему как модальное диалоговое окно на той же странице, а не перенаправлять на отдельную страницу входа и затем перенаправлять обратно. Логика GUI для входа в систему обычно достаточно проста, поэтому вам не нужно отдельное представление.

Например, вы можете представить логин как простой сервис WCF с кодировкой сообщений Json, а затем поговорить с ним из модального диалога, используя jQuery.

1 голос
/ 25 января 2009

Это всегда проблема, и вам нужно будет перепрыгнуть через множество обручей, чтобы сохранить это состояние. Вы всегда можете дважды сохранить модель в Session и ViewState. Таким образом, если пользователь пришел из места с нулевой моделью, вы можете найти его в Session.

...