JWT學習文章:
第一篇:JWT原理
第二篇:JWT原理實作代碼
第三篇:在asp.net core中使用JWT
上一篇學習了JWT的基本理論,這一篇将根據原理進行代碼實作。
要想實作jwt的加密解密,要先生成一個SecurityKey,大家可以在網上工具生成一個随機的密鑰。我是在這裡生成的。
下面篇幅大量都是代碼,因為注釋寫得很清楚,是以就不再有過多文字說明。
Value2接口标記了Auth特性,在下面驗證時有Auth特性标記的接口才會被要求token。
注意一定要把這句話添加在UseRouting()之後,因為在擴充方法中擷取Auth特性隻有在注冊了Routing規則後才能擷取到值。
通路無需權限的Value1接口:
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsICM38FdsYkRGZkRG9lcvx2bjxiNx8VZ6l2cs0TPn5UNJR0TzkkeNBDOsJGcohVYsR2MMBjVtJWd0ckW65UbM5WOHJWa5kHT20ESjBjUIF2X0hXZ0xCMx81dvRWYoNHLrdEZwZ1Rh5WNXp1bwNjW1ZUba9VZwlHdssmch1mclRXY39CXldWYtlWPzNXZj9mcw1ycz9WL49zZuBnL5ADO0MDO1ATM1IzMwEjMwIzLc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.png)
通路成功!!!
擷取token:
我啟用了swagger,如果沒有啟用在postman中請求https://localhost:5001/Auth?userName=admin&pwd=admin也是一樣的。
代碼中使用者名和密碼我隻是簡單的驗證了下是否為空,是以這裡填寫什麼都能通過。
擷取token成功說明擷取token的代碼沒有問題,邏輯有沒有問題還不能确定,是以要經過後面接口的确認看是否成功。
通路要求權限驗證的Value2接口:
不帶token:
通路失敗!!!
帶上token:
成功!!!
靜待三十分鐘(代碼中設定token過期時間為三十分鐘),調用Value2接口:
失敗了!!!錯誤提示是token過期。
如果覺得不保險,還可以逐漸調試看一下是否所有邏輯都正确執行,這裡就不再進行贅述了。
至此證明我們依照jwt原理寫的權限驗證成功!!!
源碼位址:https://gitee.com/jingboweilanGO/Demo_jwt_core.git
說明:Demo-jwt-core2是本篇文章涉及到的源碼,是使用asp.net core 自帶的jwt方法;
Demo-jwt-core是第三篇jwt文章的源碼,在asp.net core中的使用JWT。
如果覺得不錯,可以推薦收藏一下,讓我也更有動力。