Tendo problemas com Atributos e DotNetOpenID

votos
2

Eu estou tentando configurar meu código para solicitar alguns atributos do provedor de OpenID Service. Ao mesmo tempo, eu gostaria de retornar um ActionResult.

Aqui está o código no projeto MVC amostra OpenId (que vem direto do site da DotNetOpenId / DotNetOpenAuth) ...

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

Isso é ótimo, mas não me mostre requerente quaisquer atributos opcionais ou necessários. Então, eu tentei o seguinte (o meu próprio código pseduo-ish, não testado) ....

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);

Isso também parece bem. Mas ... eu não sei como agora pedir para que o resultado seja um ActionResult () ...

Como posso criar uma openId.CreateRequest que me permite definir alguns atributos necessários e retornar um ActionView?

Publicado 19/05/2009 em 13:44
fonte usuário
Em outras línguas...                            


1 respostas

votos
1

Você está indo bem. Apenas combinar as duas abordagens.

Depois de chamar IAuthenticationRequest.AddExtensiontudo o que quiser, é só chamar 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)
{ ... }
Respondeu 20/05/2009 em 00:26
fonte usuário

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