zoukankan      html  css  js  c++  java
  • Abp vnext 配置Swagger增加token认证

    abp版本:

    abp 2.9.0

    Swashbuckle.AspNetCore 5.4.1

    使用Abp cli 创建项目后,启动项目跳转至swagger页面,此时项目未启动token认证的,对于配置了权限访问的接口是无法访问的(返回401)

    swagger 开启bearer token 认证

    根据网上配置,在ConfigureServices中增加代码:

    context.Services.AddSwaggerGen(
                    options =>
                    {
                        options.SwaggerDoc("v1", new OpenApiInfo {Title = "API", Version = "v1"});
                        options.DocInclusionPredicate((docName, description) => true);
                        options.AddSecurityDefinition("Bearer", new OpenApiSecurityScheme()
                        {
                            Name = "Authorization",
                            Scheme = "Bearer",
                            Description = "Specify the authorization token.",
                            In = ParameterLocation.Header,
                            Type = SecuritySchemeType.ApiKey,
                        });
    
                        options.AddSecurityRequirement(new OpenApiSecurityRequirement()
                        {
                            {
                                new OpenApiSecurityScheme
                                {
                                    Reference = new OpenApiReference {Type = ReferenceType.SecurityScheme, Id = "Bearer"}
                                },
                                new string[] { }
                            },
                        });
                    });

    配置后启动项目,可以在swagger界面看到绿锁标志

    输入token后,仍然无法访问需要权限的接口,查看请求发现,token未通过header发送出去

     再查询后发现,swagger 3.0后 配置发生了改变,Scheme的设置强制使用小写字母,使用大写字母开头,则swagger界面将不会传输请求头,最后可使用的配置修改如下:

    context.Services.AddSwaggerGen(
                    options =>
                    {
                        options.SwaggerDoc("v1", new OpenApiInfo {Title = "API", Version = "v1"});
                        options.DocInclusionPredicate((docName, description) => true);
                        options.AddSecurityDefinition("Bearer", new OpenApiSecurityScheme()
                        {
                            Name = "Authorization",
                            Scheme = "bearer",
                            Description = "Specify the authorization token.",
                            In = ParameterLocation.Header,
                            Type = SecuritySchemeType.Http,
                        });
    
                        options.AddSecurityRequirement(new OpenApiSecurityRequirement()
                        {
                            {
                                new OpenApiSecurityScheme
                                {
                                    Reference = new OpenApiReference {Type = ReferenceType.SecurityScheme, Id = "Bearer"}
                                },
                                new string[] { }
                            },
                        });
                    });
  • 相关阅读:
    iOS删除Scene
    IOS如何解决强引用中的循环引用
    IOS中performSelector线程使用
    IOS中的类方法和实例方法
    Mac系统上安装Java的JDK并配置环境变量
    Java开发基本环境知识
    SVN上传工具Cornerstone的简单使用
    05--学习PHP面向对象--静态成员与常量成员
    04--学习PHP面向对象--访问权限修饰符
    03--学习PHP面向对象--$this
  • 原文地址:https://www.cnblogs.com/c-supreme/p/abp-vnext-use-token-in-swagger-page-successful.html
Copyright © 2011-2022 走看看