2017-02-24 78 views
2

我有一個私人頻道。我只能在現場進行身份驗證時才能使用它。但如果是護照,我不知道應該如何工作。默認情況下,我需要的所有內容都包含在Cookie中 我有:通過websocket爲laravel護照授權

Broadcast::routes(); 
Broadcast::channel('App.User.{id}', function ($user, $id) { 
    return (int) $user->id === (int) $id; 
}); 

Broadcast::routes(['middleware' => ['api']]);沒有任何效果。

我如何通過laravel護照來驗證用戶,因爲這將連接到私人頻道websocket?

回答

1

不幸的是,在目前這個回聲不支持laravel護照幫助下的授權,有必要編寫你自己的sokket.io服務器。

2

我一直在通過這個,我的解決方案是使用Laravel Echo & Laravel Echo Server for SocketIo。

獲取用戶訪問令牌,然後將其存儲在Cookie或應用程序存儲,並注入它,而你實例化或重新實例化Laravel回聲,類似如下:

let Echo = require('laravel-echo') 

window.Echo = new Echo({ 
     broadcaster: 'socket.io', 
     host: window.location.hostname + ':6001' 
     auth: { 
      headers: { 
       Authorization: 'Bearer ' + AUTH_API_TOKEN, 
      }, 
     }, 
    }); 

參考文獻:

  1. https://laravel.com/docs/5.3/broadcasting#driver-prerequisites
  2. https://github.com/tlaverdure/laravel-echo-server