Mar*_*mad 6 asp.net-web-api swagger swashbuckle
谁能知道如何将基本的auth与swashbuckle api的文档集成?
我看到swaggerconfig文件中有一个basicAuth函数:
c.BasicAuth("basic").Description("Basic HTTP Authentication");
Run Code Online (Sandbox Code Playgroud)
我做了什么:
有没有人知道我错过了什么?
谢谢!
这是我做httpbasic身份验证的方式:
public class AddAuthorizationHeaderParameterOperationFilter: IOperationFilter
{
public void Apply(Operation operation, SchemaRegistry schemaRegistry, ApiDescription apiDescription)
{
var filterPipeline = apiDescription.ActionDescriptor.GetFilterPipeline();
var isAuthorized = filterPipeline
.Select(filterInfo => filterInfo.Instance)
.Any(filter => filter is IAuthorizationFilter);
var allowAnonymous = apiDescription.ActionDescriptor.GetCustomAttributes<AllowAnonymousAttribute>().Any();
if (isAuthorized && !allowAnonymous)
{
operation.parameters.Add(new Parameter {
name = "Authorization",
@in = "header",
description = "access token",
required = true,
type = "string"
});
}
}
}
Run Code Online (Sandbox Code Playgroud)
api的用户应写入字段值:basic [un:pw] .tobase64.
参考文献: swashbuckle的问题326 swashbuckle问题2
@MarwaAhmad最优秀答案的一个小改进是检查空参数(例如,简单的GET或URL中所有参数的调用).还添加了Basic Auth的详细信息.
此外,如果您已经使用全局IAuthorizationFilter来强制执行HTTPS,那么您将需要更改一般性
filter => filter is IAuthorizationFilter
Run Code Online (Sandbox Code Playgroud)
特定的
filter => filter is AuthorizeAttribute
Run Code Online (Sandbox Code Playgroud)
public class AddAuthorizationHeaderParameterOperationFilter : IOperationFilter
{
public void Apply(Operation operation, SchemaRegistry schemaRegistry, ApiDescription apiDescription)
{
var filterPipeline = apiDescription.ActionDescriptor.GetFilterPipeline();
var isAuthorized = filterPipeline.Select(filterInfo => filterInfo.Instance)
.Any(filter => filter is IAuthorizationFilter);
var allowAnonymous =
apiDescription.ActionDescriptor.GetCustomAttributes<AllowAnonymousAttribute>().Any();
if (isAuthorized && !allowAnonymous)
{
if (operation.parameters == null)
operation.parameters = new List<Parameter>();
operation.parameters?.Add(new Parameter
{
name = "Authorization",
@in = "header",
description = "Basic HTTP Base64 encoded Header Authorization",
required = true,
type = "string"
});
}
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3969 次 |
| 最近记录: |