我想使用管理员保护来授权查看laravel horizon,但我必须以用户和管理员身份登录。
下面是我的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();
});
}
}如果我以used和admin身份登录,则可以正常工作。但是,当我仅以管理员身份登录时,gate的结果是:
array:4 [▼
"ability" => "viewHorizon"
"result" => null
"user" => null
"arguments" => "[0 => null]"
]感谢你的帮助
发布于 2020-04-02 18:33:54
对你来说可能太少太晚了,但对其他搜索这个问题的人来说:
Laravel假设您使用默认的"web“保护,并且它注入了经过身份验证的用户(因此它强制执行"web”保护检查)。
如文档中所指定的(参见大号"!“注意),要强制Laravel不需要"web“防护身份验证,你只需要指定$user = null,然后你就可以实现任何你想要的东西。
因此,HorizonServiceProvider类中的gate函数应该如下所示:
protected function gate() {
Gate::define('viewHorizon', function ($user = null) {
return Auth::guard('admin')->check();
});
}https://stackoverflow.com/questions/56579144
复制相似问题