Возникли проблемы с атрибутами и DotNetOpenID - PullRequest
2 голосов
/ 19 мая 2009

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

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

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

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

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?

1 Ответ

1 голос
/ 20 мая 2009

У тебя все отлично. Просто объедините два подхода.

После того, как вы позвоните 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)
{ ... }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...