Laravel 8 提供附加上下文
使用策略授权操作时,您可以将数组作为第二个参数传递给各种授权函数和辅助方法。 数组中的第一个元素将用于确定应调用哪个策略,而其余数组元素作为参数传递给策略方法,并可在进行授权决策时用于其他上下文。 例如,考虑以下 PostPolicy
方法定义,其中包含一个额外的 $category
参数:
/**
* 确定用户是否可以更新给定的帖子
*
* @param \App\Models\User $user
* @param \App\Models\ $post
* @param int $category
* @return bool
*/
public function update(User $user, Post $post, int $category)
{
return $user->id === $post->user_id &&
$category > 3;
}
在尝试确定验证过的用户是否可以更新给定文章时,我们可以像这样调用此策略方法:
/**
* 更新给定的博客文章
*
* @param Request $request
* @param Post $post
* @return Response
* @throws \Illuminate\Auth\Access\AuthorizationException
*/
public function update(Request $request, Post $post)
{
$this->authorize('update', [$post, $request->input('category')]);
// The current user can update the blog post...
}