Лекция
В Laravel система авторизации построена вокруг двух ключевых понятий — Policies (политики) и Gates (гейты).
Policies — это классы, которые описывают правила доступа к конкретным моделям. Например, можно определить, кто может создавать, редактировать или удалять посты. Политики удобно использовать, когда нужно связать права доступа с конкретными объектами базы данных.
Gates — это глобальные проверки авторизации, которые определяются как функции. Они подходят для простых правил, не привязанных к конкретной модели. Например, можно создать гейт, который проверяет, является ли пользователь администратором.
Laravel также предоставляет удобные методы и директивы:
Таким образом, политики и гейты позволяют гибко управлять доступом к ресурсам и действиям в приложении.

Каждый вопрос имеет 4 варианта ответа.
Только один вариант правильный — он отмечен символом *.
После списка ответов идет подсказка, которая кратко объясняет правильный выбор.
Рекомендуется сначала попробовать ответить самостоятельно, а затем свериться с правильным вариантом и прочитать подсказку.
Тест можно проходить последовательно или выборочно — он охватывает разные аспекты авторизации в Laravel.
1. Что такое Policy в Laravel?
Policy — это объектная форма авторизации, проверяющая права пользователя.
2. Как создать Policy в Laravel?
Используется команда artisan make:policy.
3. Где регистрируются Policy?
Все политики регистрируются в AuthServiceProvider.
4. Что такое Gate в Laravel?
Gate — это глобальная функция авторизации.
5. Как определить Gate?
Gate определяется через Gate::define.
6. Как вызвать Gate в коде?
Проверка выполняется через Gate::check или Gate::allows.
7. Что делает метод authorize() в контроллере?
authorize() вызывает соответствующую политику.
8. Какой метод Policy проверяет доступ к конкретной модели?
Policy обычно содержит методы для каждой операции: view, update, delete.
9. Что возвращает метод Gate::allows()?
Gate::allows возвращает булево значение.
10. Как связать Policy с моделью?
В AuthServiceProvider указывают соответствие модели и политики.
11. Что делает метод can() у пользователя?
can() — удобный метод для проверки авторизации.
12. Какой Blade-директивой проверяют права?
@can используется для проверки прав доступа в шаблонах.
13. Что делает метод deny() в Policy?
deny() возвращает отказ в доступе.
14. Какой middleware отвечает за авторизацию?
Middleware can проверяет права доступа.
15. Что лучше использовать для сложной логики авторизации?
Для сложной логики применяют комбинацию Policy и Gate.
16. Что делает метод Gate::denies()?
denies() противоположен allows(), возвращает true при отказе.
17. Какой метод Policy используется для проверки удаления модели?
Метод delete() определяет доступ к удалению.
18. Как вызвать проверку Policy напрямую в контроллере?
authorize() вызывает метод политики для модели.
19. Что делает метод before() в Policy?
before() позволяет глобально разрешить или запретить доступ.
20. Какой метод используется для массового просмотра моделей?
viewAny() проверяет доступ к списку моделей.
21. Что делает метод Gate::forUser($user)?
forUser позволяет проверить права другого пользователя.
22. Какой Blade-директивой проверяют отказ в доступе?
@cannot используется для проверки запрета.
23. Что делает метод Gate::inspect()?
inspect() дает подробный результат проверки.
24. Какой метод Policy проверяет создание модели?
create() отвечает за доступ к созданию.
25. Что делает метод Gate::authorize()?
authorize() выбрасывает исключение, если доступ запрещен.
26. Какой метод Policy проверяет обновление модели?
update() отвечает за доступ к изменению.
27. Что делает метод Gate::abilities()?
abilities() возвращает массив всех гейтов.
28. Какой метод Policy проверяет просмотр модели?
view() отвечает за доступ к просмотру.
29. Что делает метод Gate::any(['edit','delete'])?
any() возвращает true, если хотя бы одно правило выполняется.
30. Какой метод Policy проверяет восстановление модели?
restore() отвечает за доступ к восстановлению.
31. Какой метод Policy проверяет окончательное удаление модели?
forceDelete() используется для проверки доступа к безвозвратному удалению.
32. Что делает метод Gate::none(['edit','delete'])?
none() возвращает true, если ни одно правило не разрешено.
33. Какой метод Policy проверяет массовое удаление моделей?
deleteAny() отвечает за доступ к массовому удалению.
34. Что делает метод Gate::after()?
after() позволяет глобально изменить результат проверки.
35. Какой метод Policy проверяет массовое создание моделей?
createAny() отвечает за доступ к массовому созданию.
36. Что делает метод Gate::before()?
before() позволяет задать глобальное правило до остальных.
37. Какой Blade-директивой проверяют несколько прав сразу?
@canany проверяет наличие хотя бы одного разрешения.
38. Что делает метод Gate::check()?
check() используется для проверки доступа.
39. Какой метод Policy проверяет массовое обновление моделей?
updateAny() отвечает за доступ к массовому обновлению.
40. Что делает метод Gate::allows()?
allows() возвращает true при разрешении доступа.
41. Какой метод Policy проверяет массовое восстановление моделей?
restoreAny() отвечает за доступ к массовому восстановлению.
42. Что делает метод Gate::authorize() при отказе?
authorize() выбрасывает исключение при отказе в доступе.
43. Какой метод Policy проверяет массовый просмотр моделей?
viewAny() используется для проверки доступа к списку моделей.
44. Что делает метод Gate::forUser()?
forUser позволяет проверить права другого пользователя.
45. Какой метод Policy проверяет массовое окончательное удаление моделей?
forceDeleteAny() отвечает за доступ к массовому окончательному удалению.
46. Какой метод Policy проверяет массовое редактирование моделей?
updateAny() используется для проверки доступа к массовому редактированию.
47. Что делает метод Gate::define()?
define() используется для регистрации нового гейта.
48. Какой Blade-директивой проверяют несколько правил одновременно?
@canany проверяет наличие хотя бы одного разрешения.
49. Что делает метод Gate::abilities()?
abilities() возвращает массив всех гейтов.
50. Какой метод Policy проверяет массовое окончательное удаление моделей?
forceDeleteAny() отвечает за доступ к массовому окончательному удалению.
51. Что делает метод Gate::check()?
check() используется для проверки доступа.
52. Какой метод Policy проверяет массовое восстановление моделей?
restoreAny() отвечает за доступ к массовому восстановлению.
53. Что делает метод Gate::denies()?
denies() противоположен allows(), возвращает true при отказе.
54. Какой метод Policy проверяет массовое создание моделей?
createAny() отвечает за доступ к массовому созданию.
55. Что делает метод Gate::none(['edit','delete'])?
none() возвращает true, если ни одно правило не разрешено.
56. Какой метод Policy проверяет просмотр модели?
view() отвечает за доступ к просмотру.
57. Что делает метод Gate::any(['edit','delete'])?
any() возвращает true, если хотя бы одно правило выполняется.
58. Какой метод Policy проверяет удаление модели?
delete() определяет доступ к удалению.
59. Что делает метод Gate::inspect()?
inspect() дает подробный результат проверки.
60. Какой метод Policy проверяет обновление модели?
update() отвечает за доступ к изменению.
61. Что делает метод Gate::allows() при успешной проверке?
allows() возвращает true, если доступ разрешен.
62. Какой метод Policy проверяет массовое редактирование записей?
updateAny() используется для проверки массового редактирования.
63. Что делает метод Gate::authorize() при отказе?
authorize() выбрасывает исключение при отказе в доступе.
64. Какой Blade-директивой проверяют права на конкретное действие?
@can используется для проверки прав доступа в шаблонах.
65. Что делает метод Gate::before()?
before() позволяет задать глобальное правило до остальных.
66. Какой метод Policy проверяет массовое удаление записей?
deleteAny() отвечает за доступ к массовому удалению.
67. Что делает метод Gate::after()?
after() позволяет глобально изменить результат проверки.
68. Какой метод Policy проверяет восстановление модели?
restore() отвечает за доступ к восстановлению.
69. Что делает метод Gate::forUser($user)?
forUser позволяет проверить права другого пользователя.
70. Какой метод Policy проверяет окончательное удаление модели?
forceDelete() используется для проверки доступа к безвозвратному удалению.
Комментарии
Оставить комментарий
Выполнение скриптов на стороне сервера PHP (LAMP) NodeJS (Backend)
Термины: Выполнение скриптов на стороне сервера PHP (LAMP) NodeJS (Backend)