1
ユーザーのIDでaccess_tokenを取得することが可能かどうか疑問に思っていました。私はnodejsサーバーを使用してクライアントに通知を送りますが、oauth2によってユーザーに送信された同じ「ベアラ...」アクセストークンを使用して接続できるかどうかを確認する必要があります。Laravel Passport - ユーザーIDでコントローラ内のアクセストークンを取得しますか?
ユーザーのIDでaccess_tokenを取得することが可能かどうか疑問に思っていました。私はnodejsサーバーを使用してクライアントに通知を送りますが、oauth2によってユーザーに送信された同じ「ベアラ...」アクセストークンを使用して接続できるかどうかを確認する必要があります。Laravel Passport - ユーザーIDでコントローラ内のアクセストークンを取得しますか?
解決策として、コントローラからノードサーバーにトークンを供給しています。クライアントがノードサーバーに接続した後、クライアントはベアラトークンを送信し、トークンと比較するために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
});
...