.NET7之MiniAPI(特別篇) :Preview5優化了JWT驗證(上)

在.NET7的Preview5中,優化了asp.net core中的JWT驗證,不用像以前繁瑣了,更重要的是帶來了一組生成Token的工具,可以讓開發人員或測試人員不需登錄獲取Token,而達到測試的目的。

創建項目

現在來看一下怎么使用,首選創建項目,/是無驗證,/myhome是有驗證

var?builder?=?WebApplication.CreateBuilder(args);
builder.Authentication.AddJwtBearer();
app.MapGet("/",?()?=>?"無驗證");
app.MapGet("/myhome", (ClaimsPrincipal user) => $"你好 {user.Identity?.Name},歡迎來到你的主頁").RequireAuthorization();
app.Run();

用工具生成Token

本次共引入了兩個工具user-secrets和user-jwts,通過名稱,大家也能了解到一個是和加密相關,一個和JWT的token相關,它們分別擁有的命令如下圖:

367befaa6dafbe07e2e31e45d2cdb157.png

02b4eae3f697e68e7d44f7c6c17c5369.png

1、如果在項目中第一次使用user-secrets工具,首先要初始化,可以在右擊項目,用“在終端打開”,來運行命令行。

dotnet?user-secrets?init

命令的返回結果是:Set UserSecretsId to 'c2450184-8525-4ed7-9a82-d54c349dd4b8' for MSBuild project 'C:\myfile\Source\Repos\Asp.NetCoreExperiment\Asp.NetCoreExperiment\MiniAPI\MiniAPI7_NewJWT\MiniAPI7_NewJWT.csproj'.

同時,這個命令會在項目文件中生成UserSecretsID節點,值正是上面返回的UUID

<PropertyGroup><TargetFramework>net7.0</TargetFramework><Nullable>enable</Nullable><ImplicitUsings>enable</ImplicitUsings><LangVersion>preview</LangVersion><UserSecretsId>c2450184-8525-4ed7-9a82-d54c349dd4b8</UserSecretsId>
</PropertyGroup>

2、這時看一下secrets,結果是沒有配置

dotnet?user-secrets?list

No secrets configured for this application.

3、如果看一下jwts,返回值如下,有Secrets,但沒有jwts

dotnet?user-jwts?list

Project: C:\myfile\Source\Repos\Asp.NetCoreExperiment\Asp.NetCoreExperiment\MiniAPI\MiniAPI7_NewJWT\MiniAPI7_NewJWT.csproj

User Secrets ID: c2450184-8525-4ed7-9a82-d54c349dd4b8

No JWTs created yet!

4、這個時候創建一個jwt

dotnet?user-jwts?create

New JWT saved with ID 'd7dabed0'.

"Authentication": {"Schemes": {"Bearer": {"Audiences": ["http://localhost:5274"],"ClaimsIssuer": "dotnet-user-jwts"}}}

同時,會在C:\Users\axzxs\AppData\Roaming\Microsoft\UserSecrets生成一個secrets文件夾,里面有兩個文件secrets.json和user-jwts.json,里面分別放著生成的secret信息和jwt信息。

5、這時secrets再顯示一下,就會有值了

dotnet?user-secrets?list

返回結果:

dotnet-user-jwts:KeyMaterial = l4ynAWIVR5JKSKo5Yyr0XvOXgZ+dlBUwe3jI1st3DsY=

6、jwts list,就會有列表了

dotnet?user-jwts?list

09bfac17d8aa333cb3f38bd1b450a7dc.png

7、可以用jwts的print命令,顯示一下token,以方便我們在測試中使用

dotnet?user-jwts?print?d7dabed0?--show-full

94cb4de7ace232a0019198e7c49282ca.png

運行結果

運行項目,用postman測試,這個沒有什么問題,返回無驗證

9499e2faccebb8d44d4775a9ffb6f4ff.png

復制生成的Token,放在header中,請求myhome,這時會返回驗證通過的信息,并且帶有name,這個name就是當前windows用戶

00c24dcdff60273ccf4f94dd4e312ef6.png

上面只是驗證,那如果增加角色呢?先在項目中添加代碼:

app.MapGet("/order", (ClaimsPrincipal user) => $"用戶:{user.Identity?.Name},您是:{user.Claims?.Where(s => s.Type == ClaimTypes.Role).First().Value}角色,這是你的專屬頁").RequireAuthorization(builder =>
{builder.RequireRole("admin");
});

那帶角色的token怎么生成呢?先看一下user-jwts create命令的幫助,是可以在create時加name和role的。

dotnet?user-jwts?create?--help

1e83ea37f9baf3f72971b56f10bdf73c.png

dotnet?user-jwts?create?--name=桂素偉?--role=admin

創建一個名字叫桂素偉,角色是admin的token。

這時,再次測試結果如下,這次name和role都是自己設置的了。

7cf602d8a1cdeaca8c4fb4233579bf4d.png

通過上面的兩個例子,可以看到,通過這兩組工具,可以幫我們生成token,可以直接用來測試,而不需要提前把獲取tokne和權限相關的東西搞定,雖然只是一小步,也說明了.net7在進步中。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/285673.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/285673.shtml
英文地址,請注明出處:http://en.pswp.cn/news/285673.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

iOS - UTI

一、UTI概念 1、什么是UTI Uniform Type Identifier&#xff0c;是字符串&#xff0c;格式標識符。 根據UTI&#xff0c;可得到相應的其他類型的格式標識符。比如public.jpeg對應于&#xff1a; A four-character file type code (an OSType) of JPEGA filename extension of .…

【Inpho精品教程】任務一:Inpho預處理準備(Pix4d生成未畸變圖像、Pix4d生成相機參數文件)

《無人機航空攝影測量精品教程》合集目錄(Pix4d、CC、EPS、PhotoScan、Inpho) Inpho軟對于初學者來說,可能不像pix4d、PhotoScan等那么得心應手,處理過程也稍微有些復雜。Inpho處理的是POS分離的照片,在新建工程之前,需要獲取相機參數、未畸變圖像等,而這些前期的工作一…

學習MongoDB(三) Add an Arbiter to Replica Set 集群中加入仲裁節點

Add an Arbiter to Replica Set 在集群中加入仲裁節點&#xff0c;當集群中主節點掛掉后負責選出新的主節點&#xff0c;仲裁節點也是一個mongo實力&#xff0c;但是它不存儲數據。 1、仲裁節點消耗很小的資源&#xff0c;而且不需要專用的服務器。 2、不能把仲裁節點安裝到集…

[轉]new Thread的弊端及Java四種線程池的使用

介紹new Thread的弊端及Java四種線程池的使用&#xff0c;對Android同樣適用。本文是基礎篇&#xff0c;后面會分享下線程池一些高級功能。 1、new Thread的弊端 執行一個異步任務你還只是如下new Thread嗎&#xff1f; new Thread(new Runnable() {Overridepublic void run() …

【Inpho精品教程】任務二:Inpho創建工程(創建項目、新建相機參數、導入照片、導入POS、生成航條、保存項目)

《無人機航空攝影測量精品教程》合集目錄(Pix4d、CC、EPS、PhotoScan、Inpho) 在任務一中,我們做了Inpho創建工程前的數據預處理工作,獲取了未畸變的圖像、相機參數、Inpho支持的POS等數據,本文在此基礎之上,創建Inpho工程,主要步驟有:創建項目、新建相機參數、導入照片…

return view詳解

1、return View(); 返回值 類型&#xff1a;System.Web.Mvc.ViewResult將視圖呈現給響應的 View() 結果。 注釋 View() 類的此方法重載將返回一個具有空 ViewName 屬性的 ViewResult 對象。 如果你正在編寫控制器操作的單元測試&#xff0c;則需為那些不采用字符串視圖名稱的單…

C語言試題九十一之寫一個程序,用公式π/4=1-1/3+1/5-1/7+...,求π的近似值,直到最后一項的絕對值小于10^-8為止。

1、題目 寫一個程序,用公式π/4=1-1/3+1/5-1/7+...,求π的近似值,直到最后一項的絕對值小于10^-8為止。 2 、溫馨提示 C語言試題匯總里可用于計算機二級C語言筆試、機試、研究生復試中C程序設計科目、幫助C語言學者打好程序基礎、C語言基礎,鍛煉您的邏輯思維和解決問…

C# 切換中英文輸入法

本文經原作者授權以原創方式二次分享&#xff0c;歡迎轉載、分享。原文作者&#xff1a;唐宋元明清原文地址&#xff1a;https://www.cnblogs.com/kybs0/p/10298697.htmlC# 切換中英文輸入法在界面輸入時&#xff0c;有時需要限定輸入法。在不自定義正則表達式或者其它輸入處理…

[轉].NET 開源項目 Polly 介紹

今天介紹一個 .NET 開源庫&#xff1a;Polly&#xff0c;它是支持 .NET Core 的&#xff0c;目前在 GitHub 的 Star 數量已經接近 5 千&#xff0c;它是一個強大且實用的 .NET 庫。 Polly 介紹 官方對 Polly 的介紹是這樣的&#xff1a; Polly is a .NET resilience and tran…

「 劉一哥GIS」CSDN專業技術博文專欄目錄索引

劉一哥GIS 個人簡介&#xff1a;劉一哥&#xff0c;多年研究地圖學、地理信息系統、遙感、攝影測量和GPS等應用&#xff0c;精通ArcGIS等軟件的應用&#xff0c;精通多門編程語言&#xff0c;擅長GIS二次開發和數據庫系統開發&#xff0c;具有豐富的行業經驗&#xff0c;致力于…

memcached 和 redis 的區別與選擇

沒有必要過多的關注性能。由于Redis只使用單核&#xff0c;而Memcached可以使用多核&#xff0c;所以在比較上&#xff0c;平均每一個核上Redis在存儲小數據時比Memcached性能更高。而在100k以上的數據中&#xff0c;Memcached性能要高于Redis&#xff0c;雖然Redis最近也在存儲…

C語言試題九十之實現輸入一行字符,分別統計出其中英文字母、空格、數字和其他字符的個數。

??個人主頁:個人主頁 ??系列專欄:C語言試題200例目錄 ??推薦一款刷算法、筆試、面經、拿大公司offer神器 ?? 點擊跳轉進入網站 ?作者簡介:大家好,我是碼莎拉蒂,CSDN博客專家(全站排名Top 50),阿里云博客專家、51CTO博客專家、華為云享專家 1、題目 輸入一行字…

數據庫備份需要注意的

2019獨角獸企業重金招聘Python工程師標準>>> 1、PHPMYADMIN無法導出大數據表的 如果你的數據庫中有上百個數據表&#xff0c;并且有很多數據表記錄都超過了1G&#xff0c;還有很多INNODB數據表&#xff0c;這個時候用PHPMYADMIN導出&#xff0c;你就會發現恢復后可能…

在 .NET 6 中使用 dotnet format 格式化代碼

我不得不承認&#xff0c;在 code review 的時候&#xff0c;我花費了很多時間來研究 C# 的代碼格式問題&#xff0c;這是沒有太大意義的工作&#xff0c;我應該專注于其他事情&#xff0c;而不是觀察同事是否忘記格式化代碼&#xff0c;或者是使用了其他不同規則的代碼編輯器。…

【天工Godwork精品教程】任務一:創建工程(導入相片、編輯相機參數、導入POS)

無人機航測精品專欄鏈接:《無人機航空攝影測量精品教程》 【天工Godwork精品教程】任務一:創建工程(導入相片、編輯相機參數、導入POS) 【天工Godwork精品教程】任務二:導入控制點、POS權重設置、自由空三 【天工Godwork精品教程】任務三:刺像控點、空三平差、精度優化調…

[轉]數據庫事務ACID特性

ACID特性 數據庫管理系統中事務(transaction)的四個特性&#xff08;分析時根據首字母縮寫依次解釋&#xff09;&#xff1a;原子性&#xff08;Atomicity&#xff09;、一致性&#xff08;Consistency&#xff09;、隔離性&#xff08;Isolation&#xff09;、持久性&#xff…

dotnet-exec 0.4.0 released

dotnet-exec 0.4.0 releasedIntrodotnet-exec 是一個 C# 程序的命令行小工具&#xff0c;可以用來運行一些簡單的 C# 程序而無需創建項目文件&#xff0c;而且可以自定義項目的入口方法&#xff0c;支持但不限于 Main 方法Install/Updatedotnet-exec 是一個 dotnet tool&#x…

【天工Godwork精品教程】任務二:導入控制點、POS權重設置、連接點分布檢查、自由空三

無人機航測精品專欄鏈接:《無人機航空攝影測量精品教程》 【天工Godwork精品教程】任務一:創建工程(導入相片、編輯相機參數、導入POS) 【天工Godwork精品教程】任務二:導入控制點、POS權重設置、自由空三 【天工Godwork精品教程】任務三:刺像控點、空三平差、精度優化調…

C語言試題九十二之輸入數據有多行,第一行是一個整數n,表示測試用例的個數,后面跟著n行 ,每行包括一個由字母和數字組成的字符串

? ?作者簡介:大家好我是碼莎拉蒂,CSDN博客專家?????? ??個人主頁:個人主頁 ??系列專欄:C語言試題200例 ??推薦一款模擬面試、刷題神器?? 點擊跳轉進入網站 1、題目 輸入 輸入數據有多行,第一行是一個整數n,表示測試用例的個數,后面跟著n行,每行包括一…

Spring中Bean的實例化

在Spring中要實例化一個Bean有幾種方法&#xff1a; 1、最常用的&#xff08;普通方法&#xff09; <bean id"myBean" class"www.com.org.MyBean" /> 使用這樣方法&#xff0c;按Spring就會使用Bean的默認構造方法&#xff0c;即通過沒有參數的構造方…