формы 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 ответ:
Может быть, когда вы переключили его на AJAX, вы не сохранили метод POST HTTP?
Когда я попытался заменить строку
Html.BeginForm
на эту, она сработала:Установив точку останова для действия LogOnPostAssertion, я увидел, что оно действительно работает. Но само действие должно быть скорректировано, чтобы не отправлять перенаправления, а отправлять любой сценарий обновления, который подходит.<% using (Ajax.BeginForm("LogOnPostAssertion", "Auth", new AjaxOptions { HttpMethod = "POST" })) { %>