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[] { }
                            },
                        });
                    });
  • 相关阅读:
    多线程 线程队列的实现
    如何使用vagrant在虚拟机安装hadoop集群
    【leetcode】Rotate List
    麒麟(Kylin)与Ubuntu的寓意相通
    山寨APP恶意吸费隐患 门槛底致监管盲点
    2013年软件设计师之考前复习笔记:IP地址
    .gitkeep
    cmd 里面运行git提示“不是内部或外部命令,也不是可运行的程序”的解决办法...
    windows常用命令行命令
    PhpStorm terminal无法输入命令的解决方法
  • 原文地址:https://www.cnblogs.com/c-supreme/p/abp-vnext-use-token-in-swagger-page-successful.html
Copyright © 2011-2022 走看看