2016-02-20 75 views
1

我想實現一個不錯的JWT基於API,所以我已經閱讀文檔的負荷,他們大約JWTs和如何工作的,但我不能弄清楚一些事情使用JWT:在Laravel

當用戶登錄到應用程序,我是否通過JWT傳遞用戶詳細信息?例如,名稱,電子郵件和用戶權限。

我是否需要通過智威湯遜傳遞所有內容?例如,從數據庫獲取頁面特定數據或獲取所有博客文章或類似的內容。

如何在後端找到用戶是否有權執行此操作?我如何從令牌獲取用戶詳細信息?

我使用的是在這種情況下Tymon/JWT-Auth library,這裏是我的應用程序如何在此刻有點示範:

用戶發送POST請求API /認證途徑,它記錄了用戶並返回JWT令牌作爲json以及用戶詳細信息 - 名稱,電子郵件和權限。因此,從服務器返回的數據如下所示:

{ 
    "token": "blablabla", 
    "user": { 
     "email": "[email protected]", 
     "name": "Test User", 
     "permissions": [ "can_edit_posts", "can_delete_users" ] 
    } 
} 

JWT存儲在一個名爲token的全局變量中。用戶數據存儲在用戶對象中。

用戶轉到我們說的博客頁面。該頁面向服務器發送一個GET請求,該請求檢索所有帖子:/blogs?token=[THAT_GLOBAL_VARIABLE_HERE] 服務器返回所有帖子的列表。 全局令牌變量使用頭中的承載鍵中的任何值進行更新。

這是正確的做法嗎?

回答

1

當用戶登錄到應用程序時,我是否通過JWT傳遞用戶詳細信息?是的。用戶模型位於令牌內。

如何從令牌獲取用戶詳細信息? 這回答了here。您傳遞一個令牌並調用authenticate()方法。這將基於令牌返回用戶模型。從那裏你的代碼是相同的或沒有JWT。

簡而言之,您以傳統方式(基於表單)登錄到您的應用程序,然後您爲用戶授予令牌。在此令牌中是用戶模型以及您想要保存的任何其他數據。從那時起,每個基於JSON的請求都需要該令牌來確定用戶請求的是什麼。