2009-09-27 7 views
1

У меня есть единый вход решение, означающее, что пользователь войдет на один сайт и будет перенаправлен на другой. Когда я перенаправляю пользователя, я хочу передать ключ, который можно использовать для проверки статуса аутентификации пользователя.Использование asp.net, как мне перенаправить пользователя и изменить данные POST одновременно?

Большинство примеров единого входа, которые я прочитал, показывают, что сайт входа в систему, передающий зашифрованный ключ, имеет значение строки запроса. Я не думаю, что это очень хорошее решение, потому что это не очень REST-ful или все, что вы хотите назвать. Вместо этого я хотел бы передать зашифрованный ключ в данные POST. Поэтому, когда пользователь входит в систему, они отправляют POST на другой URL-адрес.

К сожалению, я не знаю (пока), как это сделать с Response.Redirect или Server.Transfer. Я думаю, Response.Redirect передает те же данные POST, когда он перенаправляет.

Кто-нибудь знает, как перенаправить пользователя веб-сайта в asp.net, изменив данные POST при перенаправлении?

(бонус вопрос: вы можете изменить GET на POST, а перенаправлять?)

ответ

3

Server.Transfer имеет способность сохранять данные формы (значения POST) в переходный период, так как это, по сути передачи тот же запрос, отправленный пользователем к новой конечной точке.

Request.Redirect не может сохранять данные POST, потому что перенаправление по сути посылает ответ конечному пользователю, который говорит «идите здесь». Затем клиент инициирует новый запрос к этой новой конечной точке. Клиент не перенаправляет данные POST во второй отдельный запрос.

Однако ни POST, ни GET не являются более или менее RESTful - оба являются строками данных, только в несколько разных частях запроса. Имея чистые URL без запроса, может выглядеть «REST-y», но он косметический.

Вот схема того, как работают два разных подхода. Как вы можете видеть, в случае Redirect изменение данных POST просто невозможно, так как в руках клиента формируется новый запрос на целевой URL; и в случае передачи, это не имеет смысла в (даже если это технически возможно), потому что, если вам нужно передать дополнительные данные в новый обработчик, вы можете сделать это самостоятельно:

alt text http://rexmorgan.net/rr_vs_st.jpg

+0

Вы говорите, вы можете изменять переменные с помощью Server.Transfer? –

+0

POST данные это. Я не забочусь о сохранении данных, так как я с изменением. –

+0

@ m4bwav Почему вы хотите изменить значения? Они только перемещаются в памяти с одного запроса на другой. –

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

  • Нет связанных вопросов^_^