2016-01-10 3 views
2

В AuthServiceProvider;Аутентификация в люменах 5.2

Auth::viaRequest('api', function ($request) { 
    if ($request->input('api_token')) { 
     return User::where('api_token', $request->input('api_token'))->first(); 
    } 
}); 

Возможно, я не могу заставить это работать. GET запросов нет body, так что нет input. Кроме того, я попытался с помощью $request->header('api_token'), но по-прежнему получать unauthorised

Если я самостоятельный поиск по DB, как показано ниже он работает;

Auth::viaRequest('api', function ($request) { 
     return User::where('api_token', 'my_api_key')->first(); 
}); 

Может кто-нибудь подтвердить, что заголовок $request можно получить здесь?

+1

Как выглядит запрос? – tptcat

+0

Вход для запросов 'GET' поступает из строки запроса:' http: //example.com/users? Api_token = my_api_key'. – patricus

+0

Все еще не работает. Я тоже пробовал его с 'POST', и он работает с' POST', потому что я положил 'api_token' в тело. Также вы должны знать, что у вас нет '?' В 'laravel/lumen', поэтому я просто изменил свой маршрут на'/{api_token} ' –

ответ

0

Прежде чем вы прочитаете мой ответ, прочитайте this article (на всякий случай, если вы используете веб-сервер Apache).

Заголовки, содержащие недопустимые символы (включая символы подчеркивания), теперь молча удаляются.

Хорошо, сейчас, чтобы получить значение api_token, вам необходимо изменить свой запрос имя заголовка поля для Api-Token (это стандарт, вы можете прочитать this).

Теперь вы можете получить доступ к стоимости Api-Token через:

$request->header('Api-Token', 'any-default-value'); 

Если вы действительно хотите получить не стандартный определение заголовка , вы можете использовать функцию getallheaders. Для получения дополнительной информации вы можете прочитать метод Symfony\Component\HttpFoundation\[email protected].