Какой способ проверки доступа лучше в Laravel? - PullRequest
0 голосов
/ 03 февраля 2019

У меня есть блог-сайт, где все пользователи могут публиковать блоги. Я узнал о Gates, Policy и Middleware. Пожалуйста, узнайте, что я использую Auth () Default Authentication Process в Laravel.Я хочу защитить пользовательский (A) блог от других пользователей.

Теперь у меня есть много вещей, чтобы справиться с этим.

Использование Auth if(Auth()->user->id==$blog->user_id)

Использование Gate if(Gate::Allow('blog_protection',$blog))

Использование политики if(Auth::user()->cant('blog_protection',$post))

Использование Middleware $this->middleware('blog_access')

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

1 Ответ

0 голосов
/ 04 февраля 2019

Я хотел бы написать класс политики для ресурса модели блога.Множество причин:

  • Вы можете перечислить все методы доступа, связанные с блогом, в одном файле, чтобы их было легко отслеживать
  • Вы можете сделать только $ this-> authorize ('access_method_name', Blog:: class) в контроллере
  • Вы можете передать дополнительные аргументы методу для его условной фильтрации

  • Если у вас есть метод вне контроллера, и вам нужно добавитьФильтр (в идеале контроллер authorize () будет отфильтровывать его), но все же вы можете использовать

$user->can() or $user->cant().. 

, который будет использовать ту же политику внутри себя.

  • Также стоит упомянуть, что вы можете использовать это в директивах blade-серверов @can () ... @ endcan @cannot ... @ endcannot

Промежуточное ПО - это то, что может вмешатьсяв каждом запросе, указанном в группе маршрутов, или во всех запросах, если он зарегистрирован как глобальная группа промежуточного программного обеспечения.Если вы хотите, чтобы фильтр доступа применялся глобально на всех маршрутах, лучше использовать промежуточное ПО.Но для конкретного ресурса я бы предпочел политики.

Короче промежуточное программное обеспечение для фильтрации и обработки запросов, в то время как Политика для управления контролем доступа на уровне детализации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...