本人水平實在很菜,屬於百度了代碼拿來會用的水平,而jwt做token驗證又是繞不過去的,所以硬着頭皮也得看着別人的貼弄出來,下面是一定要看的神貼
Asp.Net Core 3.1學習-Web Api 中基於JWT的token驗證及Swagger使用 (4)
你只需要看完第4小節就可以了,4、Api中過濾器實現通用token驗證
照着他的例子一步一步來就行,基本上可以弄的很成功,我的目錄結構如下圖
需要注意的地方:
1、驗證前端傳遞的token
例子中使用的是$ajax在前端提交數據,不論是get還是post,它都可以拼接url字符串,但是如果你使用的是Axios來post數據的話,那就無法拼接字符串了,導致按他的例子你在過濾器中獲取不到前端傳遞的token
獲取不到就沒法驗證傳遞的token,axios的攔截器也不會寫,只好用笨辦法了,在每一個實體類中都增加了一個token字段,然后在axios提交數據時把它帶上,然后在攔截器這里取出來,需要注意的是token區分大小寫,不然會出錯。
public class UserStr { public string Token { get; set; } public string User { get; set; } public string QListID { get; set; } }
修改攔截器中的代碼
那上邊的user是啥了,就是你自己在使用實體類時起的名字,不管哪個實體類,在用的時候都叫user就行了
2、System.Type.GetProperty(...) 返回 null
如果你的前端在post數據到不同的api時,有些能用,有些不能用返回上面的錯誤的話,那說明你實體類中定義的token沒有區分大小寫,可能有些大寫了,有些小寫了,才會造成這種問題。
還是好好看下axios的攔截器吧,就不會存在這樣的問題了。