2017-08-26 72 views
1

我剛學會如何使用JSON webtoken。我已經能夠在登錄時生成JSON webtoken,並設置中間件來驗證我的令牌並保護JSON驗證中間件以下的路由。如何在我的所有請求查詢字符串中包含JSON webtoken

每次嘗試訪問我的受保護路由時,我都會手動添加令牌:?token=gwt3r7r....,以便結束我的GET請求。 我知道這不應該是一個真正的應用程序的情況。我希望這是動態完成的。

這是如何動態完成的?

+1

**提示:**不使用查詢參數發送令牌,而是使用HTTP報頭,如'授權:' – RaghavGarg

+0

你如何向服務器發送請求? – RaghavGarg

+0

是的,我正在向服務器發送請求。 – OlatunjiYSO

回答

2

其實,在url結尾加入jwt token不是好習慣。你應該將它作爲標題傳遞。

你可以做的是,你可以把它作爲Authorization頭和節點JS方面,你可以得到它,如果你ipmlement以下行:

var token = req.headers['Authorization']

0

提示:不要」 t使用查詢參數發送令牌,相反,您應該爲此任務使用HTTP標頭。

從使用您的nodejs api的前端應用程序,您可以使用軟件包(如axios)向您的服務器發送請求。

,並在用戶成功登錄,您可以使用

axios.defaults.headers.common['Authorization'] = token; 

設置默認令牌未來的每一個請求,你讓採用這種封裝形式。

更新#1

在郵遞員,您只需按ctrl + s保存與令牌一起將來使用要求。對於標題,它們有Header presets

您可以將常用標題一起保存在標題預設中。在標題標籤下,您可以通過從右側的預設下拉列表中選擇「管理預設」來爲您的請求添加標題預設。

您可以參考this link做進一步的瞭解究竟在如何使用郵遞員充分發揮其潛力。

0

將標記放入URL中並不是一種好的做法。

將標記放置爲Authorization標頭會更好,但如果在發送HTTP請求之前每次都必須組裝這樣的標頭,那將很繁瑣。此外,這種解決方案僅適用於Ajax請求,當訪問新的URL/Page(頁面保護)時它不起作用 - 如果用戶手動訪問/secure/my-account頁面會發生什麼情況?在頁面重定向之前沒有機會定義請求頭。

要自動在您的所有HTTP請求JWT令牌,你可以把它作爲cookie時登錄成功:

res.cookie('token', newToken); 

這種方式,token的Cookie通過Set-Cookie響應頭保存在瀏覽器和將自動發送到服務器。

在服務器,以獲得從每個HTTP請求令牌,以下功能可用於:

var getTokenFromRequest = function(req) { 
    if (req.cookies.token) { 
    return req.cookies.token; 
    } 
    return null; 
}; 
相關問題