是否可以在招摇中更改api_key的名称?

时间:2016-06-09 08:45:40

标签: asp.net asp.net-mvc asp.net-web-api swagger swagger-ui

我正在尝试构建asp.net mvc web api并且还尝试首次使用swagger。在我的所有请求中,有一个名为' auth'的参数。所以使用swagger我正在输入一个关键的右上方的swagger页面并在测试方法之前按下explore并且我取消注释swagger.config文件中的代码,如下所示。

 c.ApiKey("auth")
 .Description("API Key Authentication")
 .Name("auth")
 .In("query");

但仍然摇摇晃晃地将参数名称作为' api_key'。如何更改' api_key'到' auth'招摇吗?

3 个答案:

答案 0 :(得分:1)

I found the solution here at the end

解决方案是index.html中下面函数的更改

function addApiKeyAuthorization() {
        var key = encodeURIComponent($('#input_apiKey')[0].value);
        if (key && key.trim() != "") {
            var apiKeyAuth = new SwaggerClient.ApiKeyAuthorization("NAME OF PARAMETER", key, "query");
            window.swaggerUi.api.clientAuthorizations.add("api_key", apiKeyAuth);
            log("added key " + key);
        }
    }

答案 1 :(得分:0)

我不确定如何直接更改api_key,但您可以使用UI js文件以您喜欢的方式完全操作它。我已经回答了类似的问题here

1)添加js文件:

c.InjectJavaScript(thisAssembly, "SwashbuckleCustomAuth.CustomContent.basic-auth.js"); 

2)这是JS的一个例子,它将连接到令牌服务器,通过用户名/密码获取API密钥,然后将其添加为标题。

$('#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!");
       }
    });
});

所以我想你可以使用更简单的方法来改变参数的名称。

这不是一个简单的名称更改,但是如果不能轻易做到这一点(当然可能仍然可能),你可以使用这种方法。

答案 2 :(得分:0)

为了使用招摇的人的利益:2.0。 这应该在swagger.json文件中设置。

{
  "swagger": "2.0",
  "info": {
    "description": "API Documentation",
    "version": "1.0.2",
    "title": "my super service"
  },
  "basePath": "/my-super-services/api",
  "host": "example.com",
  "schemes": [
    "https",
    "http"
  ],
  "securityDefinitions": {
    "UserSecurity": {
      "type": "apiKey",
      "in": "header",       <----- set this to header or cookie or query
      "name": "X-Api-Key"   <----- you custom key goes here
    }
  },