【问题标题】:Laravel Horizon - gate with different guardLaravel Horizo​​n - 带有不同守卫的大门
【发布时间】:2019-06-13 11:09:46
【问题描述】:

我想使用 admin Guard 来授权查看 laravel Horizo​​n,但我必须以用户和管理员身份登录。

这是我的 Horizo​​nServiceProvider.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();
        });
    }
}

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

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

感谢您的帮助

【问题讨论】:

  • 更正此行It works OK if I am logged in as used AND admin. But when I am logged in only as admin the result from gate is: 似乎没有意义。
  • 这意味着如果我用user guard和admin guard登录我可以访问horizo​​n,如果我用admin guard登录我访问horizo​​n时得到403

标签: php laravel laravel-horizon


【解决方案1】:

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

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

按照文档中的说明(参见大“!”注释),要强制 Laravel 不需要“web”保护身份验证,您只需指定 $user = null,然后您就可以实现任何您想要的。

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

protected function gate() {

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

}

【讨论】:

  • 另外,如果你想在本地检查门的行为,你应该将你的环境(APP_ENV)切换到“生产”,因为如果你的环境设置为“本地”,门总是允许访问。 (它在门函数“此门决定谁可以在非本地环境中访问Horizo​​n”中这样说)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-09-30
  • 2022-09-29
  • 2021-03-22
  • 2016-04-26
  • 1970-01-01
  • 2018-02-14
相关资源
最近更新 更多