首页 > 解决方案 > 如果数据库中的项目不属于当前用户,Laravel 会拒绝通过 URL 访问它吗?

问题描述

我有一个数据库表,我们在其中存储所有用户的所有产品。我们通过产品 ID 号获取产品页面,如下所示http://sitename.com/inventory/product/3

如果该产品不属于当前用户,我如何拒绝通过 URL 访问该产品?

标签: phplaravelpermissions

解决方案


为什么不只firstOrFail()在控制器中使用?假设您的产品记录包含created_by引用所有者 ID 的 a,您将同时使用id和进行搜索created_by。如果没有找到,则会抛出 404 异常。

public function show(Request $request){

    // Get the user-id
    $user_id = Auth::user()->id;

    // Get the product matching by id and owned by the current user
    $product = Product::where('id', $request->id)->where('created_by',$user_id)->firstOrFail();

    // Do your magic here if product found

}

https://laravel.com/docs/5.8/eloquent#retrieving-single-models


推荐阅读