【问题标题】:Laravel Nova only access from specific guardLaravel Nova 只能从特定守卫访问
【发布时间】:2019-04-06 07:07:57
【问题描述】:

NovaServiceProvider 中有:

protected function gate()
    {
        Gate::define('viewNova', function ($user) {
            return in_array($user->email, [
                'example@example.com',
            ]);
        });
    }

但我想做的是只允许我在config/auth 中设置的管理员守卫 访问 Nova。理想情况下,来自 web Guard 的所有用户在访问任何 Nova URL 时都应该得到 404。

This question for Telescope 似乎很相似,但我似乎无法弄清楚我应该在哪里定义它,以及如何为 web Guard 生成 404。

一个可能相关的问题:gate 方法中的viewNova 究竟是什么意思?

  • 我可以为config/auth 中的特定守卫定义该特定操作吗? (我想我在某处看到过,但似乎找不到)?
  • 似乎没有针对 Nova 的政策?

【问题讨论】:

    标签: laravel laravel-nova


    【解决方案1】:

    结帐vendor/laravel/nova/src/NovaApplicationServiceProvider.php。它有一个名为authorization的方法:

    /**
     * Configure the Nova authorization services.
     *
     * @return void
     */
    protected function authorization()
    {
        $this->gate();
    
        Nova::auth(function ($request) {
            return app()->environment('local') ||
                   Gate::check('viewNova', [$request->user()]);
        });
    }
    

    如果环境是本地的,它允许每个人访问面板,但如果环境是别的东西,它会检查 viewNova 方法上的定义并将 $request->user() 传递给它。

    在同一个文件中,有gate()方法定义了viewNova

    /**
     * Register the Nova gate.
     *
     * This gate determines who can access Nova in non-local environments.
     *
     * @return void
     */
    protected function gate()
    {
        Gate::define('viewNova', function ($user) {
            return in_array($user->email, [
                //
            ]);
        });
    }
    

    基本上,这个方法什么都不做。您可以在app/Providers/NovaServiceProvider.php 中实现它(这是您在文件中看到的并且您已经提到的默认实现)。在你的情况下,你可以这样实现它:

    /**
     * Register the Nova gate.
     *
     * This gate determines who can access Nova in non-local environments.
     *
     * @return void
     */
    protected function gate()
    {
        Gate::define('viewNova', function ($user) {
            Auth::guard('admin')->check();
        });
    }
    

    如果当前经过身份验证的用户在admin 守卫中,则返回true。希望我能回答你所有的问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-06-18
      • 2019-09-30
      • 2016-04-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-22
      • 1970-01-01
      相关资源
      最近更新 更多