$this->授权->授权抛出错误"Policy for CakeORMEntity has not been defined"在 CakePHP 4 中不起作用



如上述主题中所述。

我一直在学习CakePHP 4教程,但我使用的不是文章,而是属性。在我获得授权之前,一切都很顺利。

这个错误似乎是由于属性对象被创建为通用实体,而不是在本例中创建的属性对象,尽管我在这里可能错了。

$property = $this->Properties->newEmptyEntity();

skipAuthorization((运行良好。

下面是一个来自Properties::add((的示例。edit((和delete((的行为方式相同。

public function add()
{
$property = $this->Properties->newEmptyEntity();

$this->Authorization->authorize($property);
...

我还宣布了一项财产政策:

use AppModelEntityProperty;
use AuthorizationIdentityInterface;
/**
* Property policy
*/
class PropertyPolicy
{
/**
* Check if $user can add Property
*
* @param AuthorizationIdentityInterface $user The user.
* @param AppModelEntityProperty $property
* @return bool
*/
public function canAdd(IdentityInterface $user, Property $property)
{
return true; //Chicken and egg; you can't check a property ownership if it's not created yet
}
...

非常感谢您的帮助。

确保在PropertyPolicy的顶部定义了名称空间:

namespace AppPolicy;
use AppModelEntityProperty;
use AuthorizationIdentityInterface;

排除命名空间将导致与您描述的错误相同的错误。

相关内容

  • 没有找到相关文章

最新更新