gpt4 book ai didi

Laravel 仅检索属于经过身份验证的用户的模型记录

转载 作者:行者123 更新时间:2023-12-03 20:32:34 26 4
gpt4 key购买 nike

我正在使用 Laravel 5.4 并且有一个名为 Order 的模型.
为了测试我创建了两个用户和两个订单,每个用户有一个订单。

我刚刚看到我能够检索不是我当前用户的某人的订单。我正在使用 Auth::user()->orders 检索用户自己的订单列表.但为了显示特定订单的详细信息,我这样做:

/**
* Display the specified resource.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function show($id)
{
$order = CustomerOrder::findOrFail($id)->with('products')->get();
return view('order.show')
->with('order', $order);
}

我在这里错过了什么?是否有中间件或东西告诉应用程序只允许访问与经过身份验证的用户关联的订单?

编辑:所以我尝试使用 Policy OrderPolicy 来做到这一点(CRUD)。
view()政策的功能:
/**
* Determine whether the user can view the customerOrder.
*
* @param \App\User $user
* @param \App\CustomerOrder $customerOrder
* @return mixed
*/
public function view(User $user, CustomerOrder $customerOrder)
{
return $user->id === $customerOrder->user_id;
}

我已经在 AuthServiceProvider.php 中注册了它:
protected $policies = [
'App\Model' => 'App\Policies\ModelPolicy',
Adress::class => AdressPolicy::class, //Doesn't work either
Order::class => OrderPolicy::class
];

我仍然可以检查其他用户的订单。

最佳答案

另一种方法是使用定义的关系并告诉它只检索 ID 为 $id 的关系。 .像这样:

$customerOrder = auth()->user()->orders()->with('products')->find($id);

关于Laravel 仅检索属于经过身份验证的用户的模型记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43089148/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com