У меня стандартная настройка Laravel Passport на 5.4 — все работает нормально и генерирует токены.
Я защищаю свои маршруты API с помощью промежуточного программного обеспечения auth: api, а также специального промежуточного программного обеспечения, которое проверяет наличие и действительность определенных заголовков в запросе перед обработкой любых запросов. Это промежуточное ПО отлично работает для группы маршрутов API.
Есть ли способ обернуть маршруты Passport, сгенерированные laravel ‘… / oauth / token’, также в это промежуточное ПО?
В настоящее время я настроил маршруты в моем методе boot () AuthServiceProvider.php:
public function boot()
{
$this->registerPolicies();
// Passport/OAuth
Passport::routes(function ($router) {
$router->forAccessTokens();
$router->forTransientTokens();
});
Passport::tokensExpireIn(Carbon::now()->addDays(7));
Passport::refreshTokensExpireIn(Carbon::now()->addDays(30));
}
Конечная цель состоит в том, чтобы конечные точки oauth возвращали ошибку, если заголовки отсутствуют.
Если вам нужно добавить промежуточное ПО, например, к одному маршруту Passport /oauth/token
, вы можете сделать это следующим образом:
php artisan r:l
AccessTokenController@issueToken
namespace App\Http\Controllers; use Illuminate\Http\Request; use Laravel\Passport\Http\Controllers\AccessTokenController; class ApiTokenController extends AccessTokenController { }
Route::middleware('MyMiddleware')->post('/api-token', 'ApiTokenController@issueToken');
в app/Providers/AuthServiceProvider
включите фасад Route, добавив этот оператор использования где-то сверху:
use Illuminate\Support\Facades\Route;
Тогда на boot()
метод, поместите Passport :: routs () внутри Route :: group () следующим образом:
Route::group(['middleware'=>'MyFunkyCustomMiddleware'], function(){
Passport::routes(); // <-- Replace this with your own version
});
Надеюсь, это поможет!
Вы можете попробовать это
Passport::routes(null, ['middleware' => 'api']);