2 votes

Obtention d'une erreur 403, lors de l'utilisation de canaux privés avec laravel broadcast

Impossible d'authentifier les utilisateurs dans mon application de chat. Je reçois une erreur 403 dans la console. Cela se produit cependant lorsque j'utilise des canaux privés, mais lorsque j'utilise un canal public, cela fonctionne très bien, mais je veux absolument que les utilisateurs authentifiés seulement. C'est plus comme un spa, d'où l'utilisation d'axios pour presque tout, y compris les demandes d'authentification des utilisateurs à Laravel. Voici mon code :

BroadcastServiceProvider :

` public function boot()
{
    Broadcast::routes();

    require base_path('routes/channels.php');
}`

Channels.php :

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

Broadcast::channel('chat', function ($user) {
    return Auth::check();
});
`

directive d'écoute du composant Vue :

`Echo.private('chat')
            .listen('.App\\Events\\Chats\\MessageSent', (e) => {
                console.log(e);
                this.sentMessages.push({
                    message: e.message.message,
                    user: e.user
                });
`

Événement MessageSent :

`   public function broadcastOn()
{
    return new PrivateChannel('chat');
}
`

J'utilise maintenant le wrapper vue-echo mais j'ai toujours ce problème, je n'ai toujours pas trouvé ce qui me manque.

0voto

Johhn Points 776

Comme le suggère l'erreur, il s'agit d'un problème d'authentification. J'utilise des jetons pour l'authentification dans mon application, mais je dois maintenant transmettre ce jeton à l'utilisateur à vue-echo.

Et aussi le changement :

Broadcast::routes();

à

Broadcast::routes(['middleware' => ['auth:api']]);

Je suis en train de créer une application à page unique et j'utilise donc axios pour l'authentification, ce qui me permet d'utiliser le middleware de l'api.

Guidée par la réponse fournie par Alex sur la question 'Laravel /broadcasting/auth échoue toujours avec une erreur 403 ' Vous pouvez obtenir plus de détails ici.

Merci à tous.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X