從百度里搜索里搜索了很多jwt的文章,跟著文章寫了一個demo,這裡記錄下學習過程中碰上的問題。看文章多遍,不如手工實現一次。 模板已上傳到 https://github.com/dogvane/webapi_jwt_template ...
從百度里搜索里搜索了很多jwt的文章,跟著文章寫了一個demo,這裡記錄下學習過程中碰上的問題。看文章多遍,不如手工實現一次。
模板已上傳到github.com:dogvane/webapi_jwt_template
讓項目先飛起來
網上的都只是文章和代碼片段,github里找的,要麼跑不起來(需要配置的其它依賴,資料庫等),要麼代碼結構巨複雜,不知從何改起。
對於demo來說,就只需要2個功能
1.生成jwt的token並返回給前端(AccountController.Login)
2.執行一個需要許可權業務方法,併在裡面獲得用戶id(AccountController.DoYourTask)
需要註意的地方:
生成token代碼里,如果發行人信息和 startup.cs 里的不一致,是無法驗證通過的,特別是當你的代碼時分別從2個地方copy的時候(不要問我怎麼知道的o(>﹏<)o)。
所以,一個解析jwt信息的網站很重要 線上解析jwt參數 http://jwt.calebb.net/
在做測試時,使用了 swagger 讓swagger ui 的請求帶頭部信息 https://www.cnblogs.com/JacZhu/p/6188968.html
至於為什麼要在 BaseController里解析出UserId,大家自己領悟吧。在這裡一開始找了很多文章,沒一篇是說如何從jwt里解析出數據的,因為腦子沒轉過來,所以呵呵了很久。
其實,換一個角度想一想就知道了,不需要找什麼文章,token從Request里可以獲取,jwt的的處理類已經加入系統,只需要翻查一下api就行。所以說,讀博百篇,不如動手實現。
加幾個關鍵詞,方便有這樣搜索需求的同學:.net core jwt Decode userid