Разрешение Laravel по-прежнему позволяет мне получить доступ к странице

#laravel #laravel-7 #laravel-permission

#laravel #laravel-7 #laravel-разрешение

Вопрос:

Я пытаюсь запретить пользователю доступ к странице. Я использую https://spatie.be/docs/laravel-permission/v3/introduction в моем приложении laravel.

Проблема, с которой я сталкиваюсь, заключается в том, что пользователь по-прежнему может получить доступ к странице, даже если разрешение отключено.

Итак, у меня есть страница под названием user-info.blade.php это позволяет пользователю читать и обновлять информацию о пользователе, и только определенные люди могут это сделать.

У меня есть 2 разрешения manage users и view users . manage users позволяет обновлять и удалять пользователя, который, как view users единственный, позволяет вам просматривать их.

Проблема, с которой я сталкиваюсь, заключается в том, что когда я manage users отключаюсь для пользователя, этот пользователь все еще может получить доступ к этой странице. Все мои элементы пользовательского интерфейса исчезают, например, мои кнопки, но если я перейду на эту страницу непосредственно с URL-адреса, я все равно смогу получить к ней доступ.

Это в моем api.php

 Route::get('/manage-users', [ UserController::class, 'manageUsers'])->middleware('can:manage users');
Route::get('/users', [ UserController::class, 'getUsers'])->middleware('can:view users');
  

Я не уверен, какой другой код добавить к моему вопросу или какую другую информацию предоставить.

Ответ №1:

(Я бы предпочел поместить свой ответ в качестве комментария, но, поскольку я не могу прокомментировать, я публикую его как ответ.)

Если я понимаю ваше user-info.blade.php страница доступна как manage users для разрешений, так и view users для разрешений. Если это так, отключение manage users разрешения только помешает им обновлять информацию, они все равно смогут просматривать данные (что означает, что они могут получить доступ к странице). Вам, вероятно, тоже нужно отключить view users , если вы не хотите, чтобы они получали доступ к странице.

И я не понимаю, почему вы используете api , чтобы запретить пользователям доступ к странице.