【个人博客搭建】(11)swagger添加jwt信息

发布于:2024-04-26 ⋅ 阅读:(123) ⋅ 点赞:(0)

这个主要是为了方便使用swagger时,能更好的带入我们的token。

ps:如果使用其他第三方api工具(apipost、postman等)则不需要。

(当然,不用不能没有,是吧)

1、在AddSwaggerGen内添加代码

    var itemName = "plateau.poetize.blog.webapi";
    //把jwt加入到swagger中
    c.AddSecurityDefinition(itemName, new OpenApiSecurityScheme
    {
        Description = "请输入token,格式为 【Bearer JWT字符串】(注意中间必须有空格)",
        Name = "Authorization",//jwt默认的参数名称
        In = ParameterLocation.Header,//jwt默认放入请求头中
        Type = SecuritySchemeType.ApiKey,

        BearerFormat = "JWT",
        Scheme = "Bearer"
    });
    //swagger遵守jwt授权协议
    c.AddSecurityRequirement(new OpenApiSecurityRequirement
    {
        {
            new OpenApiSecurityScheme 
            {
                Reference = new OpenApiReference
                {
                    Type = ReferenceType.SecurityScheme,
                    Id = itemName
                }
            },
            new string [] {}
        }
    });

2、运行后:

运行后,接口这就有了一个按钮,点击就会弹出一个可输入token的界面,在输入框中输入需要的格式即可。

3、测试权限:


        /// <summary>
        /// 测试权限1(需要token)
        /// </summary>
        /// <returns></returns>
        [Authorize]
        [HttpGet]
        public string Test()
        {
            return "ok!  1";
        }
        /// <summary>
        /// 测试权限2 (无权限要求)
        /// </summary>
        /// <returns></returns>
        [AllowAnonymous]
        [HttpGet]
        public string Test2()
        {
            return "ok!  2";
        }

 其中标注了 [Authorize]的代表需要token,[AllowAnonymous]则不需要

记得注入服务:(在app.MapControllers();之前的位置)

app.UseAuthentication();
app.UseAuthorization();

4、测试。(这里已测试过了,已通过。就不在贴图了,去写下一篇博客了,有问题可以评论联系我哦)

5、拓展:

        5.1、是否可以加登录才可以查看这些列表呢?

        5.2、屏蔽特定的接口或者控制器(实际可以用,但是不可见)


网站公告

今日签到

点亮在社区的每一天
去签到