Ресурс Laravel - Доступ к пользователю - PullRequest
0 голосов
/ 26 сентября 2018

У меня есть API, созданный с использованием Passport, Laravel 5.5.

Использует систему предоставления паролей.

У меня есть маршруты с именами / api / company / get / {id} и / api / company/ поиск, который возвратит объект (ы) CompanyResource.Эти маршруты не требуют входа в систему пользователя

Внутри CompanyResource мне передается запрос $.Внутри ресурса мне нужно манипулировать тем, как данные возвращаются на основе зарегистрированного пользователя ЕСЛИ они существуют ... если Auth :: user () -> is_special

, поэтому, когда я делаювызов / api / company / get / {id} с носителем маркера доступа ... установит ли это объект Auth для его использования ???Документация Laravel показывает доступ к Auth https://laravel.com/docs/5.6/eloquent-resources#conditional-relationships

При создании токена доступа (передача учетных данных) и создании API с ним или без него - я хочу видеть / получить доступ к зарегистрированному пользователю, если он существует

1 Ответ

0 голосов
/ 26 сентября 2018

Я не знаю, является ли это наилучшей практикой, но мы внедрили специальное промежуточное ПО под названием auth.optional, которое расширяет обычное промежуточное ПО auth.api.Он в основном разрешает запрос к фактической конечной точке, а не выбрасывает AuthException, когда токен недействителен или присутствует.

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

use Illuminate\Auth\Middleware\Authenticate;

class OptionalAuthenticate extends Authenticate {
    public function handle($request, Closure $next, ...$guards) {
        try {
            $this->authenticate(array('api'));
        } catch(AuthenticationException $e) {
            //Do nothing
        }

        return $next($request);
    }
}

Проверьте класс Authenticate, который мы расширяем, чтобы увидеть, гдеон генерирует исключение AuthenticationException.

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