我想在Laravel应用程序中授权资源,以便用户只能将外键ID更改为与用户属于同一组织的项目的值。
例如:
user
属于organization
=> user.organization_id
organization
有许多item
对象=> item.organization_id
现在user
要更新具有一些列和四个项目列item1
,item2
,item3
,item4
的资源。
只允许user
设置这4个项目之一,其ID为item
,该ID属于他的组织。
我为此案例创建了一个包含该功能的控制器和策略
// Controller function
public function update(Request $request, ItemToUpdate $item)
{
//
}
// Policy function
public function update(User $user, ItemToUpdate $item)
{
//return true;
}
现在我的问题是:检查是否允许用户使用请求中发送的ID更新资源的性能最高的方法是什么。
我当然可以对每个项目都发出数据库请求,并检查是否item.organization_id === user.organization_id
,但这真的是最高效,最有效的方法吗?
谢谢
答案 0 :(得分:0)
我认为最好的方法是创建一个自定义Request并在authorize方法内部进行检查