Остановка DotNetOpenAuth от перенаправления URL - PullRequest
2 голосов
/ 05 апреля 2010

Всякий раз, когда вызывается RelyingParty, DotNetOpenAuth дает перенаправление (как и ожидалось). Это выглядит примерно так ...

return request.RedirectingResponse.AsActionResult();

Это работает нормально - но я бы хотел поймать его и поместить в диалог, а не перенаправлять существующую страницу. Есть какой-либо способ сделать это? Я пытаюсь использовать jQuery UI Dialog с $ .post в jquery и загружаю контент в функцию успеха - но он все равно перенаправляет.

            $("#openIdForm").submit(function () {
                $.post({
                    // Basic ajax request properties
                    url: 'user/LogOn',
                    data: $('#openIdForm').serialize(),
                    success: function (objResponse) {
                        // It's ignoring me! :( 
                        $('#dialog').load(objResponse).dialog('open');
                    }
                })
            }); 

Я наконец-то начинаю собирать много частей, и мне действительно нравится DotNetOpenAuth, так как я решил начальные проблемы с запуском.

1 Ответ

3 голосов
/ 06 апреля 2010

Если вы намереваетесь отобразить веб-сайт провайдера OpenID в вашем диалоговом окне jQuery, ответ - вы не можете, и это не ограничение DotNetOpenAuth. Это связано с тем, что большинство провайдеров (на самом деле всех хороших) явно отказываются от iframes и перенаправляют всю страницу, чтобы помочь своим пользователям противостоять фишинговым атакам.

Самое близкое, чего вы можете добиться, это сделать страницу провайдера доступной во всплывающем окне, что вы, безусловно, можете сделать, и на самом деле шаблоны проекта DotNetOpenAuth (а не только примеры) демонстрируют, как это сделать.

Это непростая задача - не допустить, чтобы перенаправление происходило автоматически (хотя, конечно, возможно), потому что вы хотите вместо этого? URL? Это не всегда работает, потому что некоторые сообщения OpenID слишком длинны для URL-адреса, и для отправки всего сообщения в браузер необходимо отправить самопубликационную HTML-форму, поэтому, если вы возьмете на себя эту часть потока, вам придется быть готовым к этому.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...