2017-02-24 80 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