2017-05-09 66 views
3

我正在爲移動應用編寫一個API,後端網站是在Laravel中編寫的。我使用Tymon \ JWTAuth認證是這樣的:今天Laravel JWT:本地主機上生成的令牌在服務器上有效

function auth() 
{ 
    try { 
     if(!$user = JWTAuth::parseToken()->authenticate()) 
     { 
      return ('login or register'); 
     } 
    } 
    catch (JWTException $e) 
    { 
     return ('token is invalid'); 
    } 
    return $this->user = $user ; 
} 

我注意到的東西,當我在我的本地API生成JWT令牌ID爲4用戶,如果我發送相同的令牌一個現場API,而不是得到一個錯誤我得到用戶ID爲4!基本上我可以通過在我的本地主機上在他/她的ID上生成一些令牌來與任何我想要的用戶進行登錄。我錯過了什麼嗎?

我不知道這有什麼關係這一點,但爲了節省時間在測試時,我不GET方法像發送令牌作爲POST的身體和頭部的一部分,只是在URL:

site.com/api/user?token=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9 
+1

我會讓這個評論,但我沒有足夠的聲譽。您的本地和遠程地點的密鑰是否相同?我不是100%確定的,但可能是用戶的JWT令牌的所有可能組合都是有效的,除非明確列入黑名單(或者它們已過期)。因此,如果您擁有相同的密鑰,那麼您將獲得兩個應用的有效令牌。我對JWT代幣也很陌生,所以我想看看有人對此有更多的瞭解。 [查看此鏈接獲取關於JWT令牌如何驗證的信息](https://auth0.com/docs/api-auth/tutorials/verify-access-token) – LeviJames

+0

@LeviJames是的,就是這樣,請認爲它是答案如果你可以的話 – hretic

回答

0

聽起來像你本地主機和遠程位置上的密鑰是一樣的。改變這些可能會解決你的問題。

相關問題