2017-11-11 274 views
0

我使用節點JS,JWT和Sequelize進行API身份驗證,並使用React JS/redux作爲前端部分來處理應用程序。我成功實現了應用程序的登錄/註銷/註冊部分,但現在我需要訪問current_user登錄。節點js JWT獲取當前用戶

我把一個JWT放在localStorage中,但我想要訪問用戶ID ,用戶電子郵件,用戶名和更多關於我當前登錄用戶的信息。

我應該使用Cookie嗎? LocalStorage?或者我應該在我的API中創建一個currentUser方法?

我有點失落,如果有人能幫我找到一些有用的資源或建議!

謝謝!

回答

1

在LocalStorage中存儲令牌沒問題。如果您需要獲取用戶詳細信息,請在您的API中創建一個端點,如getUser。然後,您可以使用jwt.decode(accessToken, JWT SECRET HERE),並假設accessToken有效,返回解碼值(這將是您的用戶)。

1

如果您將該信息放入JWT的有效負載中,則無需在服務器上進行解碼或不需要祕密即可獲取該信息,因此可以將該令牌放置在LocalStorage中以供任何時候使用。根據規範,智威湯遜是<headerINfo>.<payloadInfo>.<signature>。因此,在客戶端,你可以做:

// given a payload object of { username: 'bob', userid: 1, email: '[email protected]' } 
const tokenParts = token.split('.'); 
const encodedPayload = tokenParts[1]; 
const rawPayload = atob(encodedPayload); 
const user = JSON.parse(rawPayload); 
console.log(user.username); // outputs 'bob' 

顯然,這種信息是提供給有權限訪問令牌的任何客戶端,讓你只想把東西在有效載荷這對確定。