我有以下政策:
<?php
namespace App\Policies;
use App\Models\User;
use Illuminate\Auth\Access\HandlesAuthorization;
class EventPolicy
{
use HandlesAuthorization;
/**
* Determine whether the user can view the whole model.
*
* @param User $user
* @return boolean
*/
public function list(?User $user) {
return true;
}
}
AuthServiceProvider
包含正确的绑定:
protected $policies = [
Event::class => EventPolicy::class,
];
在我的控制器中:
public function index() {
$this->authorize('list');
return $this->repository->paginate();
}
这将返回403禁止 回应:
This action is unauthorized.
Laravel文档指出,您可以使用户声明User
是可选的,也可以设置默认的null
值。我都尝试都无济于事。
我正在运行v5.8
有什么想法吗?
答案 0 :(得分:0)
这可能是Laravel的内部不当行为,因为逻辑在某种程度上被破坏了(这只是一个假设)。
在这种情况下,由于任何人都可以看到结果,因此您不应添加任何用于列出的授权策略。
所以您应该简单地这样做:
public function index()
{
return $this->repository->paginate();
}
仅在应授权用户做某事时定义策略。
稍后编辑:是否有可能在服务提供商中从Laravel而非事件模型导入了Event类?