اذهب إلى المحتوى

السؤال

نشر (معدل)

لدي مشروع لارافيل وقمت بإنشاء اتصال مع pusher لإرسال البيانات. نجحت العملية عند استخدام public channels ولكن عند استخدام private channels يفشل في تخطي المصادقة ويعيد الخطأ Error 403 فقط في القنوات الخاصة private channels

BroadcastServiceProvider.php يحوي التحقق من المستخدم عند إنشاء الاتصال بالقناة:

namespace App\Providers;

use Illuminate\Support\ServiceProvider;
use Illuminate\Support\Facades\Broadcast;

class BroadcastServiceProvider extends ServiceProvider
{
    /**
     * Bootstrap any application services.
     *
     * @return void
     */
    public function boot()
    {
        Broadcast::routes();

        Broadcast::channel('App.User.*', function ($user, $userId) {
            return true;
        });
    }
}

كود ملف bootstrap.js:

import Echo from "laravel-echo"

window.Echo = new Echo({
    broadcaster: 'pusher',
    key: 'My-Key-Here'
});

window.Echo.private('App.User.1')
    .notification((notification) => {
        console.log(notification.type);
    });

يتم وصول البيانات بنجاح إلى pusher ولكنها تفشل عند الوصول إلى الروت auth

تم التعديل في بواسطة Amir Alsaeed

Recommended Posts

  • 0
نشر

في نسخ لارافيل الأحدث من 5.4 أصبح يجب تغيير الكود الموجود ضمن resources/assets/js/bootstrap.js إلى الشكل التالي:

window.Echo = new Echo({
    broadcaster: 'pusher',
    key: 'المفتاح الخاص',
    cluster: ' المستخدم cluster',
    encrypted: true,
    auth: {
        headers: {
            Authorization: 'Bearer ' + YourTokenLogin
        },
    },
});

حيث يتم تعريف token المستخدم ضمن الترويسة header.

وأيضاً يجب التأكد من تغيير app/Providers/BroadcastServiceProvider.php إلى:

Broadcast::routes()

إلى

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

ليتم إجبار أي وصول إلى القناة أن يتم التحقق منه، أو يمكن التحقق عن طريق JWT (Json Web Token) في حال يتم استخدامه، كالتالي:

بدلاً من

Broadcast::routes()

إلى

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

 

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...