拉拉维尔地平线 - 带有不同警卫的大门



我想使用管理员警卫来授权查看拉拉维尔地平线,但我必须以用户和管理员身份登录。

这是我的HorizonServiceProvider代码.php

class HorizonServiceProvider extends HorizonApplicationServiceProvider
{
    /**
     * Bootstrap any application services.
     *
     * @return void
     */
    public function boot()
    {
        parent::boot();
        // Horizon::routeSmsNotificationsTo('15556667777');
        // Horizon::routeMailNotificationsTo('example@example.com');
        // Horizon::routeSlackNotificationsTo('slack-webhook-url', '#channel');
        // Horizon::night();
    }
    /**
     * Register the Horizon gate.
     *
     * This gate determines who can access Horizon in non-local environments.
     *
     * @return void
     */
    protected function gate()
    {
        Gate::define('viewHorizon', function () {
            return Auth::guard('admin')->check();
        });
    }
}

如果我以使用和管理员的身份登录,它可以正常工作。但是当我仅以管理员身份登录时,门的结果是:

array:4 [▼
  "ability" => "viewHorizon"
  "result" => null
  "user" => null
  "arguments" => "[0 => null]"
]

感谢您的帮助

对您来说可能太少太晚了,但对于其他搜索该问题的人来说:

Laravel假设您使用默认的"Web"防护,并且它正在注入经过身份验证的用户(因此它会强制进行"Web"防护检查(。

如文档中指定的那样(请参阅大"!"注释(,要强制Laravel不需要"Web"保护身份验证,您只需指定$user = null,然后您就可以实现所需的任何内容。

所以你的情况下,HorizonServiceProvider类中的门函数应该是这样的:

protected function gate() {
    Gate::define('viewHorizon', function ($user = null) {
        return Auth::guard('admin')->check();
    });
}

相关内容

  • 没有找到相关文章

最新更新