формы dotnetopenauth и ajax


Я пытаюсь реализовать OpenID login с учетной записью Google вместе с ASP.NET MVC 2 framework и библиотека DotNetOpenAuth.

Для отображения кнопки входа в систему используется следующий код:

<% using (Html.BeginForm("LogOnPostAssertion", "Authentication", FormMethod.Post, new { target = "_top" }))
{ %>




новый SelectorProviderButton ("https://www.google.com/accounts/o8/id ", AppHelper.Url_изображения("логин" и " Google.gif")),
новый SelectorOpenIdButton (Url.Контент ("~/Content / google.gif")) }) %>



опции.DownloadYahooUILibrary = false;
%>

Этот код прекрасно работает до тех пор, пока я хочу использовать AJAX. Я не хочу перезагружать всю страницу после того, как пользователь вошел в систему. Если я изменю Html.Начните с Аякса.Начните с того, что аутентификация перестанет работать. Действие" LogOnPostAssertion " не называется.

На моем сайте форма входа открывается во всплывающем модальном диалоге. Я хочу проверить пользователя, закрыть диалоговое окно и обновить область состояния пользователя с помощью javascript. В качестве примера процесс должен быть похож на тот, как в http://shopping.com

1 2

1 ответ:

Может быть, когда вы переключили его на AJAX, вы не сохранили метод POST HTTP?

Когда я попытался заменить строку Html.BeginForm на эту, она сработала:

<% using (Ajax.BeginForm("LogOnPostAssertion", "Auth", new AjaxOptions { HttpMethod = "POST" })) { %>
Установив точку останова для действия LogOnPostAssertion, я увидел, что оно действительно работает. Но само действие должно быть скорректировано, чтобы не отправлять перенаправления, а отправлять любой сценарий обновления, который подходит.