2017-07-31 16 views
1

ユーザーのIDでaccess_tokenを取得することが可能かどうか疑問に思っていました。私はnodejsサーバーを使用してクライアントに通知を送りますが、oauth2によってユーザーに送信された同じ「ベアラ...」アクセストークンを使用して接続できるかどうかを確認する必要があります。Laravel Passport - ユーザーIDでコントローラ内のアクセストークンを取得しますか?

答えて

0

解決策として、コントローラからノードサーバーにトークンを供給しています。クライアントがノードサーバーに接続した後、クライアントはベアラトークンを送信し、トークンと比較するためにjsonwebtokenパッケージを使用してjtiを抽出しますコントローラから受信します。ここで

は、コードを行く:

コントローラ

$userTokenReceiver = $pm->receiver->tokens()->where('revoked', 'false') 
    ->select('id')->get()->sortBy('created_at', true)->first(); 
if ($userTokenReceiver && $userTokenReceiver->toArray()['id']) 
    $dataRedis->receiver_token = $userTokenReceiver->toArray()['id']; 

ノードサーバ

var jwt = require('jsonwebtoken'); 
... 
io.on('connection', function(socket) { 
    socket.waitingAuthorize = true; 
    // E> authentication_request: after connection asking client to provide token 
    socket.emit('authentication_request'); 

    // O> authorize: waiting for client's response to auth request 
    socket.on('authorize', function(token) { 
     var decoded = jwt.decode(token); 

     if (!decoded || !decoded.jti) { 
      socket.disconnect(true); 
      return; 
     } 

     socket.waitingAuthorize = false; 
     socket.token = decoded.jti; // this is compared to token received from controller 
    }); 
... 
関連する問題