Как исправить ошибку 419 с широковещательной аутентификацией - PullRequest
0 голосов
/ 24 апреля 2019

В моем Laravel Framework 5.7 / Vuejs 2.6 я использую jwt.auth и устанавливаю pusher

Я проверяю токен xsfr для своей страницы https://imgur.com/a/CveJ6jh, но я получил 419 ошибку в http://local/broadcasting/authзапросить и открыть ответ этого URL я вижу сообщение об истечении срока действия страницы.
В app / Events / NewMessage.php:

<?php

namespace App\Events;

use Illuminate\Broadcasting\Channel;
use Illuminate\Queue\SerializesModels;
use Illuminate\Broadcasting\PrivateChannel;
use Illuminate\Broadcasting\PresenceChannel;
use Illuminate\Foundation\Events\Dispatchable;
use Illuminate\Broadcasting\InteractsWithSockets;
use Illuminate\Contracts\Broadcasting\ShouldBroadcast;
use App\Message;

class NewMessage
{
    use Dispatchable, InteractsWithSockets, SerializesModels;

    public $message;
    /**
     * Create a new event instance.
     *
     * @return void
     */
    public function __construct(Message $message)
    {
        $this->message= $message;
    }

    /**
     * Get the channels the event should broadcast on.
     *
     * @return \Illuminate\Broadcasting\Channel|array
     */
    public function broadcastOn()
    {
        return new PrivateChannel('messages.'.$this->message->to);
    }
    public function broadcastWith()
    {
        return ['messages' => $this->message];
    }

}

В маршрутах / channel.php:

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

Но я делаюне вижу никакой отладочной информации сверху.

Я использовал параметры толкателя из моего предыдущего приложения.Я думаю, что они должны быть в порядке.В противном случае у меня была бы другая ошибка?

и в компоненте vue:

mounted() {
    Echo.private(`messages.${this.customerRow.id}`)
        .listen('NewMessage', (e) => {
            this.hanleIncoming(e.message);
        });

Что я пропустил?

Спасибо!

1 Ответ

1 голос
/ 24 апреля 2019

Причина этой ошибки заключается в том, что Laravel ожидает токен CSRF .

У вас есть два варианта:

  1. Включить токен CSRF (лучше для безопасности)
  2. Отключить CSRF для этого URL
...