2015-12-24 6 views
4

Как использовать защиту маркера для создания API? Я пытался ее реализовать, и я получаю ошибкуLaravel 5.2 Реализация TokenGuard

call_user_func_array() ожидает параметр 1, чтобы быть действительным обратным вызовом, класса «Осветите \ Auth \ TokenGuard» не есть «попытки» метода

+1

Возможно, вам будет так любезно опубликовать фрагмент кода, который вы написали? –

+0

Я хочу реализовать защиту маркера api, предоставляемую в laravel 5.2.Я хочу, чтобы процесс реализовал аутентификацию с помощью Api guard.The основной документ не объясняет это много –

+0

Как я уже сказал, покажите свой код –

ответ

3

После того, как вы вникли в исходный код laravel, я обнаружил, что маркерная защита сейчас бесполезна. Все auth передаются через промежуточное программное обеспечение, оттуда вы можете видеть, что он вызвал Auth::guard($name)->guest(), чтобы проверить, вошел ли пользователь в систему. \Auth::guard получит надлежащую охрану, указанную вами в маршруте. Скажем, это TokenGuard. В \ Illuminate \ Auth \ TokenGuard проверьте функцию user, чтобы увидеть, как TokenGuard получить пользователя. Во-первых, он получит входной параметр с именем api_token. Затем он позволит провайдеру, который может быть красноречивым, как настройка по умолчанию для поиска значения в базе данных. Если какое-либо значение найдено, создается новый пользовательский экземпляр. Если не существует значения входного имени api_token, то некоторые другие варианты будут опробованы:

  1. bearerToken, что значение заголовка авторизации HTTP, который начинается с: предъявителем.
  2. пароль, который прошел через HTTP-заголовок: PHP_AUTH_PW.

Ключ для соответствия в модели указан защищенным имуществом storageKey.

Таким образом, защита маркера используется для реализации стороннего токена доступа к API, а не к временному токену доступа, который хранится в сеансе.

+0

Вы можете создать токен при входе в систему и удалить его на выход из системы, однако это означало бы, что вы могли регистрироваться только на одном устройстве за раз, а также точно так же, как повторное выполнение сеанса более примитивным способом. Возможно, вам лучше использовать ключ сеанса через параметр. – malhal

+0

ну, базовый auth в larvael основан на сеансе и в api, сессия не реализована, поэтому нам нужен токен, чтобы сделать это –