我想使用管理员警卫来授权查看拉拉维尔地平线,但我必须以用户和管理员身份登录。
这是我的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();
});
}