DotNetOpenID Программный вход - PullRequest
0 голосов
/ 08 марта 2009

Я использую Dotnetopenid для моего решения openid, все хорошо, когда используется встроенный пользовательский элемент управления, но когда я хочу реализовать его программно, как в приведенном ниже коде,

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

всегда равно нулю. есть идеи?

    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;

Ответы [ 2 ]

3 голосов
/ 08 марта 2009

получение помощи от Эндрю

Я пропустил добавление расширения к моему запросу перед перенаправлением на провайдера. (этот шаг не кодируется в файлах примеров)

Для этого после создания объекта запроса сделайте так:

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

код в vb.net

0 голосов
/ 10 марта 2009

Отмечено, что исправлено и прояснено в следующем выпуске.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...