Политики авторизации / Gates для веб-приложения Laravel 5.3, использующего собственный API с паспортом

Используя Laravel 5.3, я создал веб-приложение, которое использует собственный API. Аутентификация успешно выполнена Passport. Веб-приложение использует промежуточное ПО аутентификации в маршрутах и ​​модельных политиках для авторизации. Маршрутизация API использует защиту токена auth: api по умолчанию для управления доступом.

Я хотел бы использовать те же политики в приложении / политиках для авторизации API, а также для веб-аутентификации, но я не понимаю, как это сделать. Звонки типа $this->authorize('view', $model) не работают. Полагаю, мне нужно как-то передать пользователя из Auth::guard('api')->user() в Политики?

Любая помощь будет оценена по достоинству!

Обновление: все заработало.

Похоже, что даже для вызовов API Laravel все еще использовал пользователя из веб-защиты для проверки политик. Этот пользователь не определен для вызовов API. Поэтому мне нужно было сказать Laravel, что все вызовы API должны использовать api guard.

  1. Создайте новое промежуточное ПО с Auth::shouldUse('api'); в функции дескриптора.
  2. Назначьте промежуточное ПО разделу api в ядре.

Laravel теперь будет использовать api guard для всех запросов API. Вызовы типа $this->authorize('view', $model) будут работать как в Интернете, так и в API.


person user1954085    schedule 23.01.2017    source источник


Ответы (2)


Обновление: все заработало.

Похоже, что даже для вызовов API Laravel все еще использовал пользователя из веб-защиты для проверки политик. Этот пользователь не определен для вызовов API. Поэтому мне нужно было сказать Laravel, что все вызовы API должны использовать api guard.

Создайте новое промежуточное ПО с Auth::shouldUse('api'); в функции дескриптора. Назначьте промежуточное ПО разделу api в ядре. Laravel теперь будет использовать api guard для всех запросов API. Вызовы типа $this->authorize('view', $model) будут работать как в Интернете, так и в API.

person user1954085    schedule 23.01.2017
comment
У вас нигде нет публичного репо? Я выполнил ваши инструкции, но у меня все еще возникают проблемы с паспортом и образцом политики. - person ganicus; 23.07.2017
comment
извините, мой проект приостановлен, но в ближайшие пару месяцев будет переведен на laravel 5.5, а затем опубликован. не уверены, повлечет ли это какие-либо изменения в аутентификации? может быть шаблон или пакет, в котором есть лучшие примеры для 5.4 / 5.5 - person user1954085; 24.07.2017
comment
У меня такая же проблема, и я не могу заставить ее работать - даже при новой установке. Политика даже не называется. - person Erin; 15.10.2017

Просто используйте auth:api промежуточное ПО для маршрутов с политиками

person Aios    schedule 28.09.2017