Laravel-授权其他政策



我有一个图库策略和一个照片策略、一个图库控制器和一个图片控制器。

它是这样工作的:

user-> hasMany galleries -> hasMany photos

我确实有一个照片上传页面(带dropzone(,它使用照片控制器。

url是这样的:gallery/3/upload

只有当用户是库3的所有者时,我才想限制对此页面的访问。但此页面使用的是PhotoPolicy,它使用的是照片模型,而不是Gallery模型。

如何使用GalleryPolicy而不是PhotoPolicy来授权此页面?或者我必须从GalleryPolicy复制视图方法,并将其也包含在PhotoPolicy中?

编辑:

我不明白。。。

在我的照片政策:

public function view(User $user, Photo $photo)
{
return false;        
}

在我的照片控制器中:

$this->authorize('view',  $photo);

在我的AuthenticationServiceProvider:中

protected $policies = [
AppGallery::class => AppPoliciesGalleryPolicy::class,
AppPhoto::class => AppPoliciesPhotoPolicy::class,
];

Restult:页面加载很好。。即使返回为false。。为什么?

您可以在PhotoPolicy中通过create方法授权此页面,因为您只有一种上传图像的方法,也就是使用此url。在PhotoPolicy中,您有画廊的id,它作为参数传递,所以您可以检查画廊的所有者并限制他们。

另一点是,根据API规则,最好将上传的url更改为gallery/3/photos

相关内容

最新更新