日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > asp.net >内容正文

asp.net

在asp.net core2.1中添加中间件以扩展Swashbuckle.AspNetCore3.0支持简单的文档访问权限控制...

發布時間:2023/12/4 asp.net 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 在asp.net core2.1中添加中间件以扩展Swashbuckle.AspNetCore3.0支持简单的文档访问权限控制... 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Swashbuckle.AspNetCore3.0 介紹

一個使用 ASP.NET Core 構建的 API 的 Swagger 工具。直接從您的路由,控制器和模型生成漂亮的 API 文檔,包括用于探索和測試操作的 UI。
項目主頁:https://github.com/domaindrivendev/Swashbuckle.AspNetCore
劃重點,使用多看看 Readme,然后看下項目官方示例,遇到問題找找 issues
繼上篇Swashbuckle.AspNetCore3.0 的二次封裝與使用分享了二次封裝的代碼,本篇將分享如何給文檔添加一個登錄頁,控制文檔的訪問權限(文末附完整 Demo)

關于生產環境接口文檔的顯示

在此之前的接口項目中,若使用了 Swashbuckle.AspNetCore,都是控制其只在開發環境使用,不會就這樣將其發布到生產環境(安全第一) 。
那么,怎么安全的發布 swagger 呢?我有兩種想法

  • 將路由前綴改得超級復雜

  • 添加一個攔截器控制 swagger 文檔的訪問必須獲得授權(登錄)

大佬若有更好的想法,還望指點一二

下面我將介紹基于 asp.net core2.1 且使用了 Swashbuckle.AspNetCore3.0 的項目種是怎么去實現安全校驗的
通過本篇文章之后,可以放心的將項目中的 swagger 文檔發布到生產環境,并使其可通過用戶名密碼去登錄訪問,得以安全且方便的測試接口。

實現思路

前面已經說到,需要一個攔截器,而這個攔截器還需要是全局的,在 asp.net core 中,自然就需要用到的是中間件了

步驟如下,在 UseSwagger 之前使用自定義的中間件
攔截所有 swagger 相關請求,判斷是否授權登錄
若未登錄則跳轉到授權登錄頁,登錄后即可訪問 swagger 的資源

如果項目本身有登錄系統,可在自定義中間件中使用項目中的登錄,
沒有的話,我會分享一個簡單的用戶密碼登錄的方案

Demo 如下圖所示

為使用 Swashbuckle.AspNetCore3 的項目添加接口文檔登錄功能

在寫此功能之前,已經封裝了一部分代碼,此功能算是在此之前的代碼封裝的一部分,不過是后面完成的。文中代碼刪除了耦合,和 demo 中會有一點差異。

定義模型存放用戶密碼

加密方法(HMACSHA256)

自定義中間件

此中間件中有使用的 login.html,其屬性均為內嵌資源,故事用 GetManifestResourceStream 讀取文件流并輸出,這樣可以方便的將其進行封裝到獨立的類庫中,而不與輸出項目耦合
關于退出按鈕,可以參考前文自定義 index.html

index.html 添加退出按鈕

  • 自定義 index.html 文檔

  • 默認 index.html

if (configObject.customAuth) { ?var logOutEle = document.createElement('button')logOutEle.className = 'btn 'logOutEle.innerText = '退出'logOutEle.onclick = function() {location.href = configObject.logoutUrl} ?document.getElementsByClassName('topbar-wrapper')[0].appendChild(logOutEle) }

自定義的 index.html,login.html

注意:需要將其改為內嵌資源(屬性->生成操作->嵌入的資源)

  • 點此查看 index.html

  • 點此查看 login.html

完整 Demo 下載

  • Github 預覽?

原文地址:?https://www.cnblogs.com/morang/p/9741511.html


.NET社區新聞,深度好文,歡迎訪問公眾號文章匯總 http://www.csharpkit.com

總結

以上是生活随笔為你收集整理的在asp.net core2.1中添加中间件以扩展Swashbuckle.AspNetCore3.0支持简单的文档访问权限控制...的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。