Модераторы: gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Post Request and Redirect 
V
    Опции темы
Boing747
Дата 4.1.2008, 17:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 89
Регистрация: 19.2.2007

Репутация: нет
Всего: 2



Приветствую.

Есть приложение, которое сначала проверяет, залогинен ли юзер, а затем редиректит его на запрошеную страницу. Если он не залогинен, то сначала пересылаем его на страницу для авторизации, а затем переходим на ту страницу, которую он хотел. Запрос страницы мы сохраняем. Он может быть как Get так и Post. С Get-ом понятно - простой Redirect. Что делать с постом?

Запрашиваемая страница не обязательно принадлежит этому сайту. Т е возможен случай, когда это Web - служба , к примеру, которая не поддерживает GET запрос, т е не удастся переделать запрос в GET и отправить.

Можно конечно побалываться с HttpWebRequest, и так отправить запрос, получить страницу, а потом ее как то отобразить, но мне кажется, что это не правильно. Есть идеи?

Спасибо.
PM MAIL   Вверх
Mymik
Дата 4.1.2008, 21:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1474
Регистрация: 12.5.2006
Где: Lamer-центер

Репутация: 50
Всего: 78



Цитата(Boing747 @  4.1.2008,  17:32 Найти цитируемый пост)
С Get-ом понятно - простой Redirect. Что делать с постом?

Немного не понимаю вопроса :( а что тебе мешает обращаться в POST точно так же как и с GET ???


--------------------
ICQ ::            857-857
E-mail ::         mymik[at]inbox[dot]ru 
HomaPage ::  http://localhost/

:to_become_senile  :this
PM MAIL WWW ICQ   Вверх
tol05
Дата 4.1.2008, 22:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1632
Регистрация: 21.12.2006
Где: Харьков

Репутация: 34
Всего: 170



Цитата(Boing747 @  4.1.2008,  16:32 Найти цитируемый пост)
Запрашиваемая страница не обязательно принадлежит этому сайту

это как? Ты на макрософт хочешь попасть, а твои запросы винград перехватывает и говорит, что ты не залогинен?

Давай код, может тогда хоть что-то поймем.


--------------------
На хорошей работе и сны хорошие снятся.
PM MAIL   Вверх
Boing747
Дата 5.1.2008, 14:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 89
Регистрация: 19.2.2007

Репутация: нет
Всего: 2



Цитата

Запрашиваемая страница не обязательно принадлежит этому сайту


это как? Ты на макрософт хочешь попасть, а твои запросы винград перехватывает и говорит, что ты не залогинен?

Давай код, может тогда хоть что-то поймем.


Хороший пример с Майкрософтом. Кода пока нет, ну т е  почти нет, он по большей части еще в голове.  smile 
Попытаюсь так объяснить, на примере Майкрософта:
К примеру есть ссылка http://MySystem/getPage.aspx?_page=page1
Мы идем на http://MySystem/getPage.aspx и проверяем, залогинился ли ты на MySystem, если да, то лезим в базу данных и смотрим, что странице "page1" соответствует "http://www.microsoft.com" и загружаем тебе ее, иначе идем на строницу с логином. Т е, мы заходим на сайт Майкрасофта через MySystem.
PM MAIL   Вверх
tol05
Дата 5.1.2008, 17:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1632
Регистрация: 21.12.2006
Где: Харьков

Репутация: 34
Всего: 170



ну так и делай на сайт MySystem обычную аутентификацию, а в getPage.aspx (на нее попадут только аутентифицированные пользователи) смотришь HttpRequest.QueryString для GET или HttpRequest.Form для POST.
Узнаешь целевую страницу и делаешь на нее Response.Redirect (или Server.Transfer) - как лучше, сам смотри.

Для надежности на втором сайте (на который редирект делаешь) можно посмотреть в Request.Cookie есть ли куки, добавленные первым сайтом (тем, который проводил аутентификацию). Только куки должны быть устаревающие.


--------------------
На хорошей работе и сны хорошие снятся.
PM MAIL   Вверх
Boing747
Дата 5.1.2008, 17:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 89
Регистрация: 19.2.2007

Репутация: нет
Всего: 2



Цитата(tol05 @ 5.1.2008,  17:15)
ну так и делай на сайт MySystem обычную аутентификацию, а в getPage.aspx (на нее попадут только аутентифицированные пользователи) смотришь HttpRequest.QueryString для GET или HttpRequest.Form для POST.
Узнаешь целевую страницу и делаешь на нее Response.Redirect (или Server.Transfer) - как лучше, сам смотри.

Для надежности на втором сайте (на который редирект делаешь) можно посмотреть в Request.Cookie есть ли куки, добавленные первым сайтом (тем, который проводил аутентификацию). Только куки должны быть устаревающие.

 smile Я так и делаю. Вопрос в том, что Redirect  будет через Get, а я видел страницы, которые принимают только POST, и исправить их нету возможности. Вот я думал, как бы Redirect с POSTом объеденить. 
PM MAIL   Вверх
tol05
Дата 5.1.2008, 23:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1632
Регистрация: 21.12.2006
Где: Харьков

Репутация: 34
Всего: 170



Используй куки.

Пример:
На странице Default.aspx имеется одна кнопка, в обработчике клика которой код
Код

protected void Button1_Click(object sender, EventArgs e)
{
        //Аутентификацию юзер прошел , будем считать. И просил он 
    Response.Cookies.Add(new HttpCookie("authenticationCookie", "Yezzz!"));
    Response.Redirect("~/Default2.aspx");
}

на странице Default2.aspx проверяется наличие кука от приложения, проводившего аутентификацию
Код

protected void Page_Load(object sender, EventArgs e)
{
    bool authenticated = false;
    foreach(string cookieName in Request.Cookies.Keys)
    {
        if(cookieName == "authenticationCookie" && Request.Cookies[cookieName].Value == "Yezzz!")
        authenticated = true;
    }
    if(!authenticated)
    {
                //не аутентифицирован? ТОгда на страницу аутентификации
        Response.Redirect("~/Default.aspx");
    }
}

ну а что ты имеешь в виду, когда говоришь о Redirect-е с Get-ом мне непонятно... Поставь в Default2.aspx брейкпоинт где-нибудь и посмотри Request дебаггером... Я увидел, что
Цитата

  HttpMethod    "POST"    string



--------------------
На хорошей работе и сны хорошие снятся.
PM MAIL   Вверх
Boing747
Дата 8.1.2008, 21:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 89
Регистрация: 19.2.2007

Репутация: нет
Всего: 2



Цитата

 Вобщем спасибо, tol05, за внимание. Наверное у меня просто не совсем получилось задать вопрос. 

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
Любитель
Mymik
mr.DUDA

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Любитель, Mymik, mr.DUDA.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Разработка под ASP.NET | Следующая тема »


 




[ Время генерации скрипта: 0.0577 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.