通过websocket授权laravel护照

时间:2017-02-24 18:58:16

标签: laravel-5 websocket laravel-passport laravel-echo

我有一个私人频道。我只有在网站上进行身份验证才能使用它。但是在laravel护照的情况下,我不知道它应该如何工作。默认情况下我需要的所有内容都包含在cookie中。 我有什么:

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

Broadcast::routes(['middleware' => ['api']]);无效。

如何通过laravel护照对用户进行身份验证,因为这会连接到私人频道websocket?

2 个答案:

答案 0 :(得分:4)

我经历过这个,我的解决方案是使用Laravel Echo&用于SocketIo的Laravel Echo Server。

检索用户访问令牌,然后将其存储在cookie或应用程序存储中,并在实例化或重新实例化Laravel Echo时注入它,如下所示:

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

答案 1 :(得分:0)

不幸的是,目前回声不支持laravel护照的授权,有必要编写自己的sokket.io服务器。