我正在制作一个web应用程序,用户可以在其中创建、编辑和删除页面。在开发原型时,我让一个用户访问一个路径,例如:
localhost:8000/mypage/1
url中的“1”表示数据库中的id,因此控制器可以获取相应的关联数据并相应地填充页面。
这里明显的问题是,用户可以将任意号码插入该url并编辑其他人的页面。
一个明显的修复方法是添加检查页“1”是否属于auth::user()的逻辑。但这将是一个if语句,我必须添加到每个执行此类功能的控制器中。
当我想到其他网站时,他们的url中从来没有id,或者如果有,他们看起来以某种形式“加密”。将一个id转换成我在其他网站上经常看到的无法解释的字符串的最佳实践是什么?
谢谢你的帮助。
1条答案
按热度按时间mpgws1up1#
为什么不使用一个中间件来检查用户是否可以加入路由呢?然后你可以用
$this->middleware('middlewareName');
在您需要的控制器中,或者甚至在web.php中,如果您想保护一整套路由