2017-02-24 3 views
2

Ich habe einen privaten Kanal. Und ich kann es nur benutzen, wenn ich vor Ort authentifiziert habe. Aber im Falle eines Laravel-Passes habe ich keine Ahnung, wie es funktionieren sollte. Standardmäßig enthält alles, was ich brauche, Cookies. Was ich:Autorisierung für Laravel Pass durch Websocket

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

Broadcast::routes(['middleware' => ['api']]); keine Wirkung.

Wie authentifiziere ich Benutzer über Laravel-Pass, denn das wäre mit einem privaten Kanal Websocket verbunden?

Antwort

1

Leider unterstützt das Echo im Moment keine Autorisierung mit Hilfe von Laravel-Pass, es ist notwendig, einen eigenen sokket.io-Server zu schreiben.

2

Ich war durch diese, und meine Lösung war Laravel Echo & Laravel Echo Server für SocketIo.

den Token Benutzerzugriff abrufen, dann in Cookies oder Anwendungsspeicher gespeichert werden, und es injizieren, während Sie Laravel Echo, wie die folgende Instantiierung oder Wieder Instanziierung:

let Echo = require('laravel-echo') 

window.Echo = new Echo({ 
     broadcaster: 'socket.io', 
     host: window.location.hostname + ':6001' 
     auth: { 
      headers: { 
       Authorization: 'Bearer ' + AUTH_API_TOKEN, 
      }, 
     }, 
    }); 

Referenzen:

  1. https://laravel.com/docs/5.3/broadcasting#driver-prerequisites
  2. https://github.com/tlaverdure/laravel-echo-server