php - 如果数据库中的项目不属于当前用户,Laravel 会拒绝通过 URL 访问它吗?
问题描述
我有一个数据库表,我们在其中存储所有用户的所有产品。我们通过产品 ID 号获取产品页面,如下所示http://sitename.com/inventory/product/3
。
如果该产品不属于当前用户,我如何拒绝通过 URL 访问该产品?
解决方案
为什么不只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
推荐阅读
- jquery - “SQLSTATE [23000]:违反完整性约束:1062 重复条目
- javascript - RXJS Observables - 每个索引值和合并结果的 http 调用
- c++ - C++ 虚拟关键字和系统更新
- java - 如何将 int 存储在 String 中?
- go - 如何计算通过 gob.Encode 写入的每条记录的哈希值
- java - 如何在我的 Java 聊天室中调试“java.net.UnknownHostException”?
- c# - 实体框架外键引用未映射
- c# - 为什么我不能在 Entity Framework Core Sqlite 文件中使用文件扩展名?
- php - 从 PHP 执行 Fortran 程序
- function-declaration - 由于函数表达式的多样性,为什么我可以将 JavaScript 中的变量作为函数调用?