- 地平线版本:^5.7
- Laravel 版本:^8.18
- PHP 版本:^8.0
- Redis 驱动和版本:predis/phpredis ^1.1
描述:
当我尝试为我的授权逻辑使用自定义保护时,我能够从第二个回调参数而不是第一个参数访问经过身份验证的对象。
重现步骤:
namespace App\Providers;
class HorizonServiceProvider extends HorizonApplicationServiceProvider
{
...
protected function authorization()
{
$this->gate();
Horizon::auth(function ($request) {
return app()->environment('local') ||
Gate::check('viewHorizon', [$request->user('web:admin')]);
// used custom guard
});
}
protected function gate()
{
Gate::define(
'viewHorizon',
fn ($user = null, $admin = null) =>
// 2nd arg = $admin has the authenticated object
// # unexpected behaviour
($admin ? $admin::class : null) == Admin::class
);
}
}
这是正常的行为吗?还是我做错了什么?