通过websocket为laravel护照授权
问题描述:
我有一个私人频道。我只能在现场进行身份验证时才能使用它。但如果是护照,我不知道应该如何工作。默认情况下,我需要的所有内容都包含在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?
答
不幸的是,在目前这个回声不支持laravel护照帮助下的授权,有必要编写你自己的sokket.io服务器。
答
我一直在通过这个,我的解决方案是使用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,
},
},
});
参考文献: