我们过去做过这样的事情:
config
.EnableSwagger(c => {
c.SingleApiVersion("v1",
ConfigurationManager.AppSettings["ServiceName"]);
AddXmlComments(c);
})
.EnableSwaggerUi(c => c.InjectJavaScript(Assembly.GetEntryAssembly(),
"<<your namespace and file location>>.index.js"));
那么 index.js 会是这样的:
$("#input_apiKey").change(function () {
setHeader($("#input_apiKey").val());
});
$(function () {
var request = $.ajax({
url: "<<url for getting your auth token>>",
type: "GET",
xhrFields: {
withCredentials: true
},
});
request.done(function (res) {
setHeader(res.Header);
$('#input_apiKey')[0].value = res.Header;
});
request.fail(function (jqXHR, textStatus) {
alert("Authorization Failed: " + textStatus);
});
$("#input_apiKey").attr("title", "Enter Header value from user service");
$("#input_apiKey").attr("placeholder", "<<token header name>>");
})
function setHeader(key) {
swaggerUi.api.clientAuthorizations.remove("api_key");
swaggerUi.api.clientAuthorizations.remove("key");
swaggerUi.api.clientAuthorizations.add("key", new SwaggerClient.ApiKeyAuthorization("<<token header name>>", key, "header"));
}