作者: | 来源:互联网 | 2023-09-25 17:17
在.NET Core项目中,我添加了一个安全定义(底部的代码),该定义向页面添加了Authorize按钮,用户可以输入api密钥-一切正常。
是否可以在URL中指定api密钥,以便Swagger自动使用该密钥而不需要输入它?像/swagger/index.html?authorization=0123456789
之类的东西。
现有代码:
services.AddSwaggerGen(c => {
...
c.AddSecurityDefinition("api key",new ApiKeyScheme() {
Description = "Authorization query string expects API key",In = "query",Name = "authorization",Type = "apiKey"
});
var requirements = new Dictionary> {
{ "api key",new List().AsEnumerable() }
};
c.AddSecurityRequirement(requirements);
});
似乎带有authorization
参数的URL应该可以,但不能。
P.S。使用Swashbuckle 4.0.x
确实有可能,但是您将不得不覆盖Swagger-UI的索引页,以便可以将自定义处理程序插入[mauticURL]/api/contacts?search=onwner:[ownername]
回调中。
- 从Swashbuckle's source repo获取最新的index.html(理想情况下,获取匹配的版本)
- 调整
FoodImage.setImageResources(food.image)
以添加onComplete
回调处理程序,以便在用户界面准备就绪时调用preauthorizeApiKey
- 在
configObject
扩展方法中覆盖OnComplete
以提供自定义html
我最终进行了以下设置(为简便起见,省略了一些内容):
wwwroot / swashbuckle.html
IndexStream
Startup.cs
UserSwaggerUI
完成所有操作后,使用?authorization = 1234567890调用标准的swagger URL应该会自动授权页面。