阅读(2835) (13)

Laravel 8 控制面板授权

2021-07-09 11:44:35 更新

Horizon 在 /horizon 上显示了一个控制面板。默认情况下,你只能在 local 环境中访问这个面板。在你的 app/Providers/HorizonServiceProvider.php 文件中,有一个 gate 方法。控制着在非本地环境中对 Horizon 的访问。您可以根据需要修改此方法,来限制对 Horizon 的访问:

/**
 * 注册 Horizon 授权
 *
 * 此方法决定了谁可以在非本地环境中访问 Horizon
 *
 * @return void
 */
protected function gate()
{
    Gate::define('viewHorizon', function ($user) {
        return in_array($user->email, [
            'taylor@laravel.com',
        ]);
    });
} 

注意:Laravel 会自动将 authenticated 用户注入到 Gate 中。如果你的应用通过另一种方式提供了 Horizon 的安全性,比如 IP 限制,那么你的 Horizon 用户可能不需要 「登录」。因此,你需要将上面的 function ($user) 更改为 function ($user = null),以强制 Laravel 不需要身份验证。