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的文本框,到这,就完了。你可以开车了。

posted @ 2017-03-30 15:59  过错  阅读(18700)  评论(1编辑  收藏  举报