Возникли проблемы с атрибутами и DotNetOpenID

голоса
2

я пытаюсь настроить мой код, чтобы запросить некоторые атрибуты поставщика OpenID службы. В то же время, я хочу вернуть ActionResult.

Вот код в образце проекта OpenId MVC (который поставляется прямо из сайта DotNetOpenId / DotNetOpenAuth) ...

try
{
    return openid.CreateRequest(Request.Form[openid_identifier])
        .RedirectingResponse
        .AsActionResult();
 }
 catch (ProtocolException ex)
 { ... }

Это замечательно, но она не показывает мне с просьбой любые необязательные или обязательные атрибуты. Итак, я попробовал следующее (мой собственный, непроверенный код pseduo-иш) ....

var fetch = new FetchRequest();
fetch.Attributes.AddRequired(WellKnownAttributes.Contact.Email);
fetch.Attributes.AddRequired(WellKnownAttributes.Name.FullName);
fetch.Attributes.AddRequired(WellKnownAttributes.Name.Alias);
fetch.Attributes.AddRequired(WellKnownAttributes.Preferences.Language);
fetch.Attributes.AddRequired(WellKnownAttributes.Preferences.TimeZone);
fetch.Attributes.AddRequired(WellKnownAttributes.Person.Gender);

openId.CreateRequest(identifier.ToString()).AddExtension(fetch);

Это также, кажется, хорошо. Но ... я не знаю, как теперь вопросом для результата быть ActionResult () ...

Как я могу создать openId.CreateRequest, что позволяет мне определить некоторые необходимые атрибуты и вернуть ActionView?

Задан 19/05/2009 в 11:44
источник пользователем
На других языках...                            


1 ответов

голоса
1

Вы делаете большой. Просто объединить эти два подхода.

После того, как вы называете IAuthenticationRequest.AddExtensionвсе , что вы хотите, просто позвоните IAuthenticationRequest.RedirectingResponse.AsActionResult().

try
{
    var request = openid.CreateRequest(Request.Form["openid_identifier"]);

    var fetch = new FetchRequest();
    fetch.Attributes.AddRequired(WellKnownAttributes.Contact.Email);
    fetch.Attributes.AddRequired(WellKnownAttributes.Name.FullName);
    fetch.Attributes.AddRequired(WellKnownAttributes.Name.Alias);
    fetch.Attributes.AddRequired(WellKnownAttributes.Preferences.Language);
    fetch.Attributes.AddRequired(WellKnownAttributes.Preferences.TimeZone);
    fetch.Attributes.AddRequired(WellKnownAttributes.Person.Gender);
    request.AddExtension(fetch);

    return request.RedirectingResponse.AsActionResult();
}
catch (ProtocolException ex)
{ ... }
Ответил 19/05/2009 в 22:26
источник пользователем

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more