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的文本框,到这,就完了。你可以开车了。
作者:过错
出处:http://www.cnblogs.com/wang2650/
关于作者:net开发做的久而已。十余年时光虚度!
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接。如有问题,可以邮件:wang2650@163.com
联系我,非常感谢。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)