通过 websocket 授权 laravel 护照
Authorization for laravel passport through websocket
我有私人频道。而且我只有在现场进行身份验证后才能使用它。但是如果是 laravel 护照,我不知道它应该如何工作。默认情况下,我需要的所有内容都包含在 cookie 中。
我有什么:
Broadcast::routes();
Broadcast::channel('App.User.{id}', function ($user, $id) {
return (int) $user->id === (int) $id;
});
Broadcast::routes(['middleware' => ['api']]);
没有效果。
如何通过 laravel 护照对用户进行身份验证,因为它会连接到私人频道 websocket?
不幸的是,目前 echo 不支持借助 laravel 护照进行授权,因此有必要编写您自己的 sokket.io 服务器。
我经历过这个,我的解决方案是使用 Laravel Echo & Laravel Echo Server for SocketIo。
检索用户访问令牌,然后将其存储在 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,
},
},
});
参考文献:
我有私人频道。而且我只有在现场进行身份验证后才能使用它。但是如果是 laravel 护照,我不知道它应该如何工作。默认情况下,我需要的所有内容都包含在 cookie 中。 我有什么:
Broadcast::routes();
Broadcast::channel('App.User.{id}', function ($user, $id) {
return (int) $user->id === (int) $id;
});
Broadcast::routes(['middleware' => ['api']]);
没有效果。
如何通过 laravel 护照对用户进行身份验证,因为它会连接到私人频道 websocket?
不幸的是,目前 echo 不支持借助 laravel 护照进行授权,因此有必要编写您自己的 sokket.io 服务器。
我经历过这个,我的解决方案是使用 Laravel Echo & Laravel Echo Server for SocketIo。
检索用户访问令牌,然后将其存储在 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,
},
},
});
参考文献: