Swagger ui測試中的驗證 apikey


Swagger ui測試中的驗證 apikey


我們使用swagger 用來呈現webapi的接口,除了可以看到接口的說明和參數說明,還可以進行測試。但是我們的接口通常是有驗證的,不是隨便就能調用的,這時候用swagger怎么辦呢?

  • 修改SwaggerConfig文件
  • 添加api-key-header-auth.js文件
  • 修改api-key-header-auth.js 文件
  • 測試

1. 修改SwaggerConfig文件

取消這個的注釋,使生效。 c.BasicAuth("basic") .Description("Basic HTTP Authentication");
取消這個的注釋,使生效。 c.InjectJavaScript(thisAssembly, "wang2650.CustomContent.api-key-header-auth.js"); wang2650為項目名

2. 根目錄下創建 CustomContent 文件夾,添加api-key-header-auth.js文件 ,該段js會在調用接口的時候,在head中加入一個名為Authorization的key,內容為apikey的文本框中的值。

(function () {
    $(function () {
        $('#input_apiKey').show();
        $('#input_apiKey').on('change', function () {
            var key = this.value;
            if (key && key.trim() !== '') {
                swaggerUi.api.clientAuthorizations.add("key", new SwaggerClient.ApiKeyAuthorization("Authorization", key, "header"));
            }
        });
    });
})();

3. 修改api-key-header-auth.js 文件 文件屬性 要選擇嵌入資源

Authorization 文件中的這個名可以任意定義,我通常傳token

4.測試 假設你用DelegatingHandler的方式驗證 request.Headers.Authorization 就是apikey。

public class AuthenticationMessageHandler : DelegatingHandler {

    protected override Task<HttpResponseMessage> SendAsync(HttpRequestMessage request,
            CancellationToken cancellationToken)
    {
        if (request.Headers.Authorization == null)
        {
            var reply = request.CreateResponse(HttpStatusCode.Unauthorized, "acc_token驗證錯誤");
            return Task.FromResult(reply);
        }
        
          //token驗證后,通過token獲取用戶信息,此處直接用apike做為用戶的身份證
          var principal = new ClaimsPrincipal(new ClaimsIdentity(new[]
            {
                new Claim(ClaimTypes.Name, request.Headers.Authorization.ToString())
            }, "Basic"));
            // authorize attribute
            request.GetRequestContext().Principal = principal;
    }
    
    }

       [HttpGet]
    public string GetId(dynamic  id) {
        return "用戶id:" + this.User.Identity.Name; //顯示api的值
    }
    
    
    

運行網站,會在頭部出現一個apikey的文本框,到這,就完了。你可以開車了。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM