在. net core 3.1 WebApi中使用Swagger框架+Jwt權(quán)限驗證 第二篇

編輯于 2020/04/02

基于JWT Bearer驗證授權(quán)的Swagger

簡介


書接上文,本篇基于上篇的Swagger講解在Swagger中添加Jwt Bearer授權(quán)驗證
JWT授權(quán)驗證請查看我的這篇文章
從0到1詳解Jwt以及在Asp.NetCore 3.1中使用JWT Bearer授權(quán)認(rèn)證

如果你是觀看Swagger框架 第一篇然后來看第二篇的話,又對Jwt了解不多的話,請務(wù)必觀看上面鏈接的Jwt詳解,因為此篇是根據(jù)Jwt篇的源碼進(jìn)行添加Swagger講解的

一. 拉取Jwt源碼


碼云

本篇文章主要講解Jwt + Swagger,不會過多介紹Git,需要了解相關(guān)知識的請自行百度。
使用Https拉取我的博客源碼,簽出Jwt_Bearer分支即可
git clone https://gitee.com/zyknow/blog_project.git

二. 添加Swagger


1. 根據(jù)第一篇介紹內(nèi)容添加Swagger
  • 先根據(jù)第一篇Swagger添加Swagger,這里就不過多演示了。
2. 修改Startups.cs中的ConfigureServices
public void ConfigureServices(IServiceCollection services)
{
    //注入Appsettings,這樣才能在任何地方調(diào)用靜態(tài)方法讀取appsettings.json
    services.AddSingleton(new Appsettings(Env.ContentRootPath));

    services.AddControllers();

    #region Swagger
    services.AddSwaggerGen(c =>
    {
        c.SwaggerDoc("v1", new OpenApiInfo
        {
            Version = "v0.1.0",
            Title = "Blog.Core API",
            Description = "API文檔",
            TermsOfService = new Uri("http://www.itdecent.cn/u/1117a3ecacbc"),
            Contact = new OpenApiContact { Name = "Blog.Core", Email = "Blog.Core@xxx.com", Url = new Uri("http://www.itdecent.cn/u/1117a3ecacbc") }
        });

        var basePath = AppContext.BaseDirectory;
        var xmlPath = Path.Combine(basePath, "NetCore.Blogs.Demo.xml");//這個就是剛剛配置的xml文件名
        c.IncludeXmlComments(xmlPath, true);



        #region Token綁定到ConfigureServices(以下都是新添加的代碼)

        //開啟加權(quán)小鎖
        c.OperationFilter<AddResponseHeadersFilter>();
        c.OperationFilter<AppendAuthorizeToSummaryOperationFilter>();

        //在Header中添加Token
        c.OperationFilter<SecurityRequirementsOperationFilter>();

        //必須是oauth2              
        c.AddSecurityDefinition("oauth2", new OpenApiSecurityScheme
        {
            Description = "JWT授權(quán)(數(shù)據(jù)將在請求頭中進(jìn)行傳輸) 直接在下框中輸入Bearer {token}(注意兩者之間是一個空格)\"",
            Name = "Authorization",//jwt默認(rèn)的參數(shù)名稱
            In = ParameterLocation.Header,//jwt默認(rèn)存放Authorization信息的位置(請求頭中)
            Type = SecuritySchemeType.ApiKey
        });
        #endregion
    });

    #endregion

    #region Jwt注冊
    //獲取在配置文件中獲取Jwt屬性設(shè)置
    services.AddAuthorizationSetup();
    #endregion

}

三. 運(yùn)行


  • 運(yùn)行結(jié)果如下 當(dāng)我們直接進(jìn)行請求需要授權(quán)接口時,接口請求失敗,提示401,如下


    401
  • 那么要怎么樣才能請求驗證成功呢
1. 獲取Jwt Token
  • 在Login界面中請求獲取Token


    獲取Token
2. 添加Token到請求頭
  • 點(diǎn)擊Authorize
    Authorize
  • Value中輸入Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL3dzLzIwMDgvMDYvaWRlbnRpdHkvY2xhaW1zL3JvbGUiOiJhZG1pbiIsIk5hbWUiOiLmiJHlj6tUdXNlciIsIkFnZSI6IjE4IiwiZXhwIjoxNTg1ODE0NTYwLCJpc3MiOiJ6eWtub3ciLCJhdWQiOiJhdWRpZW5jZSJ9.Ihy51p6VB6Ve_k_stqDQd6Fsi4H8Z9p05ThYMurswHU
    Bearer后面跟剛才去Login控制器獲取的Token。
  • 輸入完成后點(diǎn)擊頁面下的Authorize就行了。
3. 再次請求受保護(hù)的方法

可以看到請求成功了!是不是很簡單呢


請求成功

四. 源碼


拉取后記得切換成Jwt+Swagger分支

碼云

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容