Я пытаюсь реализовать вход в openId с учетной записью Google вместе с ASP.NET MVC 2 framework и библиотекой DotNetOpenAuth.
Следующий код используется для визуализации кнопки входа в систему:
<% using (Html.BeginForm("LogOnPostAssertion", "Authentication", FormMethod.Post, new { target = "_top" })) <br />
{ %><br /></p>
<blockquote>
<p><%= Html.AntiForgeryToken() %><br />
<%= Html.Hidden("ReturnUrl", "/", new { id = "ReturnUrl" }) %><br />
<%= Html.Hidden("openid_openidAuthData") %><br />
<%= Html.OpenIdSelector(this.Page, new SelectorButton[] {<br />
new SelectorProviderButton("<a href="https://www.google.com/accounts/o8/id" rel="nofollow noreferrer">https://www.google.com/accounts/o8/id</a>", AppHelper.ImageUrl("login/google.gif")),<br />
new SelectorOpenIdButton(Url.Content("~/Content/google.gif"))
}) %><br />
<% } %><br />
</div><br />
</div><br />
<% var options = new OpenIdSelector();<br />
options.DownloadYahooUILibrary = false;<br />
%><br />
<%= Html.OpenIdSelectorScripts(this.Page, options, null) %><br />
Этот код работает нормально, пока я не хочу использовать AJAX. Я не хочу перезагрузить всю страницу после того, как пользователь вошел в систему. Если я изменяю Html.BeginForm на Ajax.BeginForm, аутентификация перестает работать. Действие «LogOnPostAssertion» не вызывается.
На моем сайте форма входа открывается во всплывающем модальном диалоге. Я хочу проверить пользователя, закрыть диалоговое окно и обновить область статуса пользователя, используя JavaScript. В качестве примера процесс должен быть похож на тот, что был на http://shopping.com