2009-03-08 13 views
0

Ich verwende DotNetOpenID für meine openid Lösung, alles ist in Ordnung, wenn der Benutzer die Kontrolle in-built verwenden, aber wenn ich will es programmaticaly implementieren, wie der Code unten,DotNetOpenID Programmatische Anmeldung

openid.Response.GetExtension<DotNetOpenId.Extensions.SimpleRegistration.ClaimsResponse>(); 

ist immer Null. eine Idee?

OpenIdRelyingParty openid = createRelyingParty(); 
    if (openid.Response != null) { 
     switch (openid.Response.Status) { 
      case AuthenticationStatus.Authenticated: 
       // This is where you would look for any OpenID extension responses included 
       // in the authentication assertion. 
       // var extension = openid.Response.GetExtension<SomeExtensionResponseType>(); 

       // Use FormsAuthentication to tell ASP.NET that the user is now logged in, 
       // with the OpenID Claimed Identifier as their username. 
       State.ProfileFields = openid.Response.GetExtension<DotNetOpenId.Extensions.SimpleRegistration.ClaimsResponse>(); 
       FormsAuthentication.RedirectFromLoginPage(openid.Response.ClaimedIdentifier, false); 
       break; 

Antwort

3

bekommen Hilfe von Andrew

ich verpasst habe Erweiterung auf meine Anfrage hinzuzufügen, bevor zu Provider umgeleitet wird. (dieser Schritt ist nicht in Beispieldateien codiert)

, dies zu tun, nachdem das Anforderungsobjekt zu schaffen, wie dies tut:

Dim request As IAuthenticationRequest = openid.CreateRequest(openid_identifier.Text) 
     ' This is where you would add any OpenID extensions you wanted 
     ' to include in the authentication request. 
     ' request.AddExtension(someExtensionRequestInstance); 
     Dim myclaim As New ClaimsRequest 

     With myclaim 
      .BirthDate = DemandLevel.Request 
      .Country = DemandLevel.Request 
      .Email = DemandLevel.Request 
      .FullName = DemandLevel.Request 
      .Gender = DemandLevel.Request 
      .Language = DemandLevel.Request 
      .Nickname = DemandLevel.Request 
      .PostalCode = DemandLevel.Request 
      .TimeZone = DemandLevel.Request 

     End With 


     request.AddExtension(myclaim) 









     ' Send your visitor to their Provider for authentication. 
     request.RedirectToProvider() 

Code ist in vb.net

+0

Können Sie bitte auf einige Schritt für Schritt Anweisungen zur Implementierung von DotNetOpenId in MVC zeigen. Ich bin ein Anfänger mit MVC und OpenId. – Picflight

+0

@Picflight können Sie hier http://stackoverflow.com/questions/933884/request-for-tutorial-to-add-openid-support-to-nerddinner-asp-net-mvc-application überprüfen – mohamadreza

0

Noted befestigt zu werden, und in der nächsten Version deutlicher gemacht.

Verwandte Themen