我做了一个链接
Route::get('/admin/edit/user/{user_id}', [UserController::class, 'editUser'])->name('edit.user');
这就是为什么当一个用户点击编辑时,他会看到https://0608sns.org/admin/edit/user/1789,他可以编辑他的个人资料,但如果该用户输入另一个id,如1790,他可以使用该用户的个人资料。那么,我该如何预防呢?
我做了一个链接
Route::get('/admin/edit/user/{user_id}', [UserController::class, 'editUser'])->name('edit.user');
这就是为什么当一个用户点击编辑时,他会看到https://0608sns.org/admin/edit/user/1789,他可以编辑他的个人资料,但如果该用户输入另一个id,如1790,他可以使用该用户的个人资料。那么,我该如何预防呢?
2条答案
按热度按时间c86crjj01#
您必须使用
Policies
来允许实体做某事或不做某事。在您的示例中,您应该使用
php artisan make:policy UserPolicy
创建一个名为UserPolicy
的策略,其内容应该是:然后,在你的控制器中,你应该有这样的东西:
我可能错过了一些东西,这是从我的头顶,所以尝试一下,让我知道它是否有效。
6xfqseft2#
实际上你只需要一个简单的
Gate
[政策也很好]但对于像这样的简单授权,我们更喜欢盖茨。点击这里https://laravel.com/docs/10.x/authorization#writing-gates