2016-07-28 300 views
1

我試圖從JWT無效(或刪除)令牌,但我無法實現這一點。首先,我做了一件很喜歡這個答案說Logout issue with Laravel JWT-auth authentication如何使JWT令牌失效PHP

JWTAuth::invalidate(JWTAuth::getToken())): 

但我得到這個錯誤:

Non-static method Tymon\JWTAuth\JWT::invalidate() should not be called statically, assuming $this from incompatible context

然後我做了這樣的事情:

use Illuminate\Http\Request; 
use Tymon\JWTAuth\JWTAuth; 

class AuthController extends Controller 
{ 
    protected $jwt; 

    public function __construct(JWTAuth $jwt) 
    { 
     $this->jwt = $jwt; 
    } 

    public function invalidateToken(Request $request) 
    { 
     $this->jwt->parseToken()->invalidate(); 

     return response()->json(array('message' => 'log out')); 
    } 

    ... 
} 

但我仍然可以使用令牌爲另一個請求,我不能刪除或無效。

我做錯了什麼使標記無效?

編輯:

我讀從這裏發出了另一個問題,從智威湯遜的回購張貼在github (this is the library I'm using),我跟所有的例子無效或刪除令牌,我仍然不能刪除或廢除它。

+0

由於它的本性,您不能使標記無效。在這裏你的選擇:http://stackoverflow.com/questions/21978658/invalidating-json-web-tokens –

+0

@E_p我使用這個庫:https://github.com/tymondesigns/jwt-auth,我不使用庫'nodejs' – pableiros

+0

沒有區別JWT對於任何服務器端語言都是一樣的。沒有任何機制可以使標記過期我在提供的鏈接中接受的答案告訴你如何處理它。 –

回答

0
JWTAuth::invalidate(old token); 
+1

這不起作用。 –