2015-03-26 22 views
11

OAuth2 ile Swashbuckle 5.0.x kullanmaya çalışıyorum. OAuth2'nin Kaynak Sahibi Şifre Kimlik Bilgileri Hibe'yi kullanmak istiyorum. Temel olarak sadece bir token sormak istiyorum ve her bir istekte bu jetonu ekleyin (örneğin, kapsamlara gerek yok).Swagger/Swashbuckle: Kaynak Sahibi Parola Kimlik Bilgileri ile OAuth2

Bu konuda yardımcı olabilecek herhangi biri var mı? Swagger/swashbuckle'ı nasıl yapılandırmalıyım?

config 
    .EnableSwagger(c => { 
        //do stuff 
    }) 
    .EnableSwaggerUi(c => { 
     c.InjectJavaScript(typeof(Startup).Assembly, "MyNamespace.SwaggerExtensions.onComplete.js"); 
    }); 

Al kullanıcı adı:

havalı bir JavaScript tamamlama-işleyici ekleyin: şifreyi API_KEY metin kutusu:

$('#input_apiKey').change(function() { 
    var key = $('#input_apiKey')[0].value; 
    var credentials = key.split(':'); //username:password expected 
    $.ajax({ 
     url: "myURL", 
     type: "post", 
     contenttype: 'x-www-form-urlencoded', 
     data: "grant_type=password&username=" + credentials[0] + "&password=" + credentials[1], 
     success: function (response) { 
      var bearerToken = 'Bearer ' + response.access_token; 
      window.authorizations.add('key', new ApiKeyAuthorization('Authorization', bearerToken, 'header')); 
     }, 
     error: function (xhr, ajaxoptions, thrownerror) { 
      alert("Login failed!"); 
     } 
    }); 
}); 

cevap

10

Tamam, ben böyle çözülür @Dunken. Cevabınız neredeyse benim sorunu çözmek, ancak Onunla ilk kod parçacığını "config.EnableSwagger eklendi yeri belirtin misiniz bu

$('#explore').off(); 

$('#explore').click(function() { 
    var key = $('#input_apiKey')[0].value; 
    var credentials = key.split(':'); //username:password expected 

$.ajax({ 
    url: "yourAuthEndpoint", 
    type: "post", 
    contenttype: 'x-www-form-urlencoded', 
    data: "grant_type=password&username=" + credentials[0] + "&password=" + credentials[1], 
    success: function (response) { 
     var bearerToken = 'Bearer ' + response.access_token; 

     window.swaggerUi.api.clientAuthorizations.add('Authorization', new SwaggerClient.ApiKeyAuthorization('Authorization', bearerToken, 'header')); 
     window.swaggerUi.api.clientAuthorizations.remove("api_key"); 
     alert("Login successfull"); 
     }, 
     error: function (xhr, ajaxoptions, thrownerror) { 
     alert("Login failed!"); 
     } 
    }); 
}); 
+0

gibi bunu biraz değiştirmek zorunda son Swashbuckle sürümü ile çalışması için ... "? İkincisi, index.html dosyasına ekledim, doğru muyum? – zubactik

+0

Bunu Startup.cs (OWIN başlangıcı) bölümüne ekledim. İkincisi, ASP.NET Web API projeme eklediğim gömülü bir kaynak olan bir JavaScript dosyası (onComplete.js). – Dunken

+1

En son sürüm –

15

teşekkür ederiz

+0

Mükemmel! Lütfen kod bloğuna son '});' yazın. – Neshta

+0

Bitti. Yanlış biçimlendirmeye işaret ettiğin için teşekkürler. –

+0

Bunu yapmaya çalışıyorum. Komut dosyasını projeye kök dizininde ekledim. Gömülü bir kaynak olarak işaretlendi ancak swagger UI'yi yeniden kurduğumda yüklediğimde bunu düzeltemeyeceğini söylüyor. – ToddB

İlgili konular