我有一个私人频道。我只有在网站上进行身份验证才能使用它。但是在laravel护照的情况下,我不知道它应该如何工作。默认情况下我需要的所有内容都包含在cookie中。 我有什么:
Broadcast::routes();
Broadcast::channel('App.User.{id}', function ($user, $id) {
return (int) $user->id === (int) $id;
});
Broadcast::routes(['middleware' => ['api']]);
无效。
如何通过laravel护照对用户进行身份验证,因为这会连接到私人频道websocket?
答案 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 :(得分:0)
不幸的是,目前回声不支持laravel护照的授权,有必要编写自己的sokket.io服务器。