Я работаю с Laravel Passport впервые.Я создаю API, который будет использоваться мобильным приложением.
Для аутентификации это то, что я делаю:
public function login(Request $request)
{
$loginData = Validator::make($request->all(), [
'email' => 'required|email',
'password' => 'required',
]);
if( $loginData->fails() )
{
return response()->json(['error' => $loginData->errors()], 401);
}
if( Auth::attempt(['email' => request('email'), 'password' => request('password')]) )
{
$data = [
'grant_type' => 'password',
'client_id' => $this->client->id,
'client_secret' => $this->client->secret,
'username' => $request->email,
'password' => $request->password,
'scope' => '',
];
$request = Request::create('/oauth/token', 'POST', $data);
return app()->handle($request);
}
else
{
return response()->json(['error' => 'Invalid credentials'], 401);
}
}
При успешном входе в систему возвращается токен доступа как таковой:
{
"token_type": "Bearer",
"expires_in": 31622400,
"access_token": "access_token",
"refresh_token": "refresh_token"
}
Теперь цель состоит в том, чтобы использовать этот токен доступа, передав его в заголовок всех маршрутов, требующих аутентификации.
Например, в моем файле routes/api.php
у меня есть этоroute:
Route::post('/login', 'API\AuthController@login');
Route::apiResource('/tasks', 'API\TaskController')->middleware('auth:api');
В моем TaskController
все методы в нем должны быть переданы заголовку, который содержит токен доступа для аутентификации запроса.Вот где мой вопрос.Я не могу найти ресурс, который объясняет, как это сделать.Поэтому в каждом запросе мне нужно передать что-то подобное в заголовок запроса:
Accept: application/json
Authorization: Bearer access_token
Это мой метод TaskController
index
.Как передать токен доступа здесь?
public function index()
{
//how do i capture the access token in here so that i can pass it to the request header?
return TaskResource::collection(auth()->user()->tasks()->latest()->paginate(4));
}
Существует ли метод Passport по умолчанию, который можно использовать для передачи токена доступа требуемым запросам или как это сделать?