问题描述
我正试图阻止用户访问页面。我在laravel应用中使用https://spatie.be/docs/laravel-permission/v3/introduction。
因此,我有一个名为user-info.blade.PHP的页面,该页面允许用户读取和更新用户的信息,并且只有特定的人才能这样做。
我有2个权限manage users
和view users
。 manage users
允许您更新和删除用户,而view users
仅允许您查看用户。
我遇到的问题是,当我为某个用户关闭manage users
时,该用户仍然可以访问该页面。我所有的UI内容都消失了,就像按钮一样,但是
如果我直接从url转到该页面,我仍然可以访问它。
这是在我的api.PHP
Route::get('/manage-users',[ UserController::class,'manageUsers'])->middleware('can:manage users');
Route::get('/users','getUsers'])->middleware('can:view users');
解决方法
(我希望将我的答案作为评论,但由于无法发表评论,因此我将其发布为答案。)
如果我了解您的 user-info.blade.php 页面可同时获得manage users
和view users
权限。在这种情况下,关闭manage users
权限只会阻止他们更新信息,他们仍然可以查看数据(这意味着他们可以访问页面)。如果您不希望他们访问页面,则可能也需要关闭view users
。
我不明白您为什么使用api
来阻止用户访问页面。