0

我在 Laravel 中使用 Horizo​​n 和 web 套接字。如何只允许管理员访问这两项服务?我只需要为此创建一个新的中间件吗?

例子:

/*
     * Dashboard Routes Middleware
     *
     * These middleware will be assigned to every dashboard route, giving you
     * the chance to add your own middleware to this list or change any of
     * the existing middleware. Or, you can simply stick with this list.
     */
    'middleware' => [
        'web',
        Authorize::class,
    ],
4

1 回答 1

1

为了查看 Horizo​​n 的仪表板,应该已经有一个配置。检查您config/app.php在 providers 数组中是否有以下内容:

'providers' => [ ..., App\Providers\Horizo​​nServiceProvider::class ]

稍后您可以在 中定义门访问逻辑app/Providers/HorizonServiceProvider.php,可能类似于:

protected function gate()
{
    Gate::define('viewHorizon', function ($user) {
        return $user->isAdmin();
    });
}

在您的用户模型中,实现谁是管理员的功能逻辑isAdmin()。这是一种方法。

https://laravel.com/docs/7.x/horizo​​n#dashboard-authorization中的更多详细信息

对于web socket,你可以创建一个中间件就好了,类似于前面的例子来判断handle函数里面谁有访问权限。

于 2020-06-30T23:01:15.863 回答