swoole websocket 使用 passport 無法獲取當前使用者問題

Olivia-outshine發表於2019-03-24

藉助使用 https://github.com/swooletw/laravel-swoole 啟用sebsocket。

為什麼使用jwt 可以? 而passport 不行?
很簡答,jwt可使用url?token= you token 方式即可獲取使用者資訊,但passport 不行
ps: 目前我也沒找到如何有效的設定socket.io header

SO, 機智的我想到在獲取使用者資訊中介軟體之前使用url?token= you token設定request header,輕鬆解決這個問題。

laravel-swoole 文件中在配置檔案設定中介軟體( docs -> )


'middleware' => [
    // 這裡加入你的中介軟體
    App\Http\Middleware\SetBearerToRequestHeader::class,

    SwooleTW\Http\Websocket\Middleware\DecryptCookies::class,
    SwooleTW\Http\Websocket\Middleware\StartSession::class,
    SwooleTW\Http\Websocket\Middleware\Authenticate::class,
],

class SetBearerToRequestHeader
{

    public function handle($request, Closure $next)
    {
        $request->headers->set('Authorization', 'Bearer ' . $request->get('token'));

        return $next($request);
    }
}

不到位的地方大神們多多指教!

swoole websocket 使用passport 無法獲取當前使用者問題

Bill

相關文章