我在5.4上有一个标准的Laravel Passport设置 - 它一切正常并且正在生成令牌 .
我使用auth:api中间件以及自定义中间件来保护我的API路由,该中间件在处理任何请求之前检查请求中的特定标头是否存在且有效 . 此中间件适用于API路由组 .
有没有办法将laravel'... / oauth / token'生成的Passport路由包装在这个中间件中?
目前我已经在我的AuthServiceProvider.php boot()方法中设置了路由:
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 endpoints 将返回错误 .
3 回答
在
app/Providers/AuthServiceProvider
中包含Route facade,通过在顶部的某处添加此use语句:然后在
boot()
方法上,将Passport :: routes()放在Route :: group()中,如下所示:希望有所帮助!
你可以试试这个
如果您只需要将中间件添加到一个Passport路由,例如
/oauth/token
,您可以这样做:输入
php artisan r:l
查找所需路线检查用于此路由的控制器和方法,例如,它将是
AccessTokenController@issueToken
创建扩展AccessTokenController的控制器,可以将其留空
使用Illuminate \ Http \ Request;
使用Laravel \ Passport \ Http \ Controllers \ AccessTokenController;
类ApiTokenController扩展了AccessTokenController
{
}
Route::middleware('MyMiddleware')->post('/api-token', 'ApiTokenController@issueToken');