先說我走過的坑:
我用了Laravel5.4,require了jwt的0.5.11版本,簡直被坑哭了。
前期一帆風順,當你要驗證用戶的時候,就會報一個錯誤:
Auth guard driver [api] is not defined.
宣告這個搭配已經Over了,我一路在源碼dd也沒dd出什么。
看了github的Issue,5.3及以上貌似就需要使用1.0.0beta版本了。
看Issue的時候,說的一本正經的那個朋友是個外國人,沒怎么看懂,就照著開發版的源碼看了一遍。
想看的可以看看這個: https://github.com/tymondesigns/jwt-auth/issues/860
好吧,差不多懂了,開搞:
1 下載開發者版本
image.png
修改composer.json,添加 "tymon/jwt-auth": "dev-develop"
2 在
config/app.php
中添加provider
Tymon\JWTAuth\Providers\LaravelServiceProvider::class
3 發布配置
php artisan vendor:publish --provider="Tymon\JWTAuth\Providers\LaravelServiceProvider"
4 生成個密鑰
php artisan jwt:secret
5
config/auth.php
做點修改
指定guard
Model的修改
6 Model里要做點事情了,我的Model是
App/Models/Users
最重要的東西
7 使用示例
先將JWTAuth注入
注入JWTAuth
設置Token
獲取Token
獲取Token效果
校驗Token
校驗Token
在header
中添加如下頭:
Authorization:Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0OjgwMDEvYWNjZXNzX3Rva2VuIiwiaWF0IjoxNDk2NTgzMjE1LCJleHAiOjE0OTY1ODY4MTUsIm5iZiI6MTQ5NjU4MzIxNSwianRpIjoidmlvRWd1RTNkTmtBODgxMyIsInN1YiI6MTMsInBydiI6ImRiYWEzMGJkNTRjNzUyNmI2MGIyN2UzNzk0ODI3ZmU4In0.ZZX5LNVe4qGJcWNrYO-f9EMFqVCF37cO4S0r_pxDyyE
json格式,為了方便看
{
"Authorization": "Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0OjgwMDEvYWNjZXNzX3Rva2VuIiwiaWF0IjoxNDk2NTgzMjE1LCJleHAiOjE0OTY1ODY4MTUsIm5iZiI6MTQ5NjU4MzIxNSwianRpIjoidmlvRWd1RTNkTmtBODgxMyIsInN1YiI6MTMsInBydiI6ImRiYWEzMGJkNTRjNzUyNmI2MGIyN2UzNzk0ODI3ZmU4In0.ZZX5LNVe4qGJcWNrYO-f9EMFqVCF37cO4S0r_pxDyyE"
}
校驗效果圖
這樣就OK了