首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >具有不同保护的Laravel Horizon - gate

具有不同保护的Laravel Horizon - gate
EN

Stack Overflow用户
提问于 2019-06-13 19:09:46
回答 1查看 1.4K关注 0票数 2

我想使用管理员保护来授权查看laravel horizon,但我必须以用户和管理员身份登录。

下面是我的HorizonServiceProvider.php代码

代码语言:javascript
复制
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();
        });
    }
}

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

代码语言:javascript
复制
array:4 [▼
  "ability" => "viewHorizon"
  "result" => null
  "user" => null
  "arguments" => "[0 => null]"
]

感谢你的帮助

EN

回答 1

Stack Overflow用户

发布于 2020-04-02 18:33:54

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

Laravel假设您使用默认的"web“保护,并且它注入了经过身份验证的用户(因此它强制执行"web”保护检查)。

如文档中所指定的(参见大号"!“注意),要强制Laravel不需要"web“防护身份验证,你只需要指定$user = null,然后你就可以实现任何你想要的东西。

因此,HorizonServiceProvider类中的gate函数应该如下所示:

代码语言:javascript
复制
protected function gate() {

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

}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56579144

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档