Обычно API, использующие аутентификацию на основе токена, требуют, чтобы токен отправлялся с каждым запросом, так как, надеюсь, API не сохраняют состояние. Это означает, что независимо от того, обрабатывает ли ваш контроллер пользовательский запрос, он также будет иметь токен для выполнения других запросов в фоновом режиме. В вашем контроллере вы сможете получить токен следующим образом:
class MyController
{
public function index(Request $request)
{
$authorization = $request->header('Authorization');
$token = null;
if (substr($authorization, 0, 7) === "Bearer ") {
$token = substr($authorization, 7);
}
// in theory, this is obsolete as your controller should only
// be called if there is a valid token present on the request
if ($token === null) {
abort(403); // or whatever
}
$client = ...; // initialize the client
$response = $client->request('POST', '/api/user', [
'headers' => [
'Authorization' => 'Bearer '.$token,
'Accept' => 'application/json',
],
]);
// return some response to the user
}
}
Очевидно, что имеет смысл извлечь разбор токена в его собственную функцию, которая находится в базовом контроллере, от которого наследуются все остальные контроллеры. В вашем конкретном примере вы также можете просто использовать ['headers' => ['Authorization' => $request->header('Authorization')]]
, поскольку вы хотите только переслать заголовок.
Старый ответ, который не имеет никакого смысла:
Сохранить токен в данных сеанса пользователя:
session(['token' => $token]);
Массив указывает, что вы устанавливаете данные в сеансе. Извлечь токен еще проще:
$token = session('token');