我有如下部分代码所示的类别策略。
class CategoryPolicy
{
use HandlesAuthorization;
public function view(User $user, Category $category)
{
return true;
}
}
然后,我从mount方法内部的livewire组件调用。
class Productcategorysetup extends Component
{
use CategoryPolicy;
public function mount()
{
$this->authorize('view',CategoryPolicy::class);
}
}
我收到错误信息
App\Http\Livewire\Generalsetting\Productcategorysetup不能使用App\Policies\CategoryPolicy-这不是特征
如有任何建议或指导,我们将不胜感激,谢谢。
要在Livewire中使用授权,您需要首先导入AuthorizesRequests
特征,然后在类中使用它。
其次,当使用view
时,authorize()
的第一个参数是模型的实例——在您的情况下,是类别。但这听起来像是你想列出类别,即";索引";文件-这意味着您要检查viewAny
(因为view
用于特定资源(。在这种情况下,第二个参数是模型的类名,而不是模型的实例。
<?php
use IlluminateFoundationAuthAccessAuthorizesRequests;
use AppModelsCategory;
class Productcategorysetup extends Component
{
use AuthorizesRequests;
public function mount()
{
$this->authorize('viewAny', Category::class);
}
}
然后在您的政策中,
class CategoryPolicy
{
use HandlesAuthorization;
public function viewAny(User $user)
{
return true;
}
public function view(User $user, Category $category)
{
return true;
}
}