Laravel BroadcastServiceProvider - 根据路由请求进行身份验证的条件中间件

时间:2018-04-17 14:13:29

标签: laravel laravel-echo

我想为广播路线实施多个身份验证保护。

一个特定的警卫正在侦听一条特定路线,这就是为什么我在考虑使用路径请求来定义应该使用哪个版权保护的原因。

以下的实施并不奏效。我没有收到任何错误消息。根本没有反馈。私人频道不起作用。

如果我传递字符串' auth:admin'而不是$ guard变量,它可以工作。

当我从广播管理器中获取属性时,如果我传递字符串或变量,结果似乎相同。

知道我做错了吗?

<?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()
    {

        $guard = \Request::path() === 'home' ? 'auth:admin' : 'auth:master';

        Broadcast::routes(['middleware' => ['web', $guard]]);

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

1 个答案:

答案 0 :(得分:0)

只需为auth中间件提供多个防护,以便知道哪个防护用于身份验证:

Broadcast::routes(['middleware' => ['web', 'auth:admin, master']]);