…本
當(dāng)Web Api 2.0使用OAuth2授權(quán)時(shí),如何在Swagger中添加Authorization請求頭?
Swagger說明文檔支持手動(dòng)調(diào)用Api, 但是當(dāng)Api使用OAuth2授權(quán)時(shí),由于沒有地方可以輸入授權(quán)Token, 導(dǎo)致響應(yīng)結(jié)果一直是401沒有授權(quán)。
解決方案:
在Swagger配置文件中,添加對請求頭中Authorization的設(shè)置。
1. 在Api項(xiàng)目中添加一個(gè)新類AddAuthorizationHeader并實(shí)現(xiàn)IOperationFilter接口
publicclassAddAuthorizationHeader : IOperationFilter
{//////Adds an authorization header to the given operation in Swagger.//////The Swashbuckle operation.///The Swashbuckle schema registry.///The Swashbuckle api description.publicvoidApply(Operation operation, SchemaRegistry schemaRegistry, ApiDescription apiDescription)
{if(operation ==null)return;if(operation.parameters ==null)
{
operation.parameters=newList();
}varparameter =newParameter
{
description="Token",
@in="header",
name="Authorization",
required=true,
type="string"};if(apiDescription.ActionDescriptor.GetCustomAttributes().Any())
{//如果Api方法是允許匿名方法,Token不是必填的parameter.required=false;
}
operation.parameters.Add(parameter);
}
}
2. 在SwaggerConfig.cs中啟用Authorization請求頭。
publicstaticvoidRegister(HttpConfiguration config)
{varthisAssembly =typeof(SwaggerConfig).Assembly;
config.EnableSwagger(c=>{