我正在尝试为我正在使用的API实现一个JWT库,并且我希望能够在少量例外的令牌检查中包装我的整个API路由组。我遇到的问题并不是JWT特有的。
在控制器构造函数中,当我应用中间件时,我能够使用此语法将jwt.auth应用于整个控制器并排除“authenticate”端点。
public function __construct()
{
// Apply the jwt.auth middleware to all methods in this controller
// except for the authenticate method. We don't want to prevent
// the user from retrieving their token if they don't already have it
$this->middleware('jwt.auth', ['except' => ['authenticate']]);
}
当我尝试在路由组中执行相同操作时,我无法正确传递'exception'数组。这会导致authenticate方法需要一个令牌(它不需要它,因为它是检索令牌的端点)。
Route::group(['prefix' => 'api', 'middleware' => 'jwt.auth', 'except' => ['authenticate']], function()
{
Route::resource('authenticate', 'AuthenticateController', ['only' => ['index']]);
Route::post('authenticate', 'AuthenticateController@authenticate');
});
我感觉这是一个语法问题,但是我找不到其他人问这个问题并且解析器没有阻塞它,它只是不起作用。任何帮助将不胜感激!
答案 0 :(得分:1)
我在laravel/framework进行了简要介绍,但我没有看到对此的支持。我建议使用嵌套的Route::group
,如下所示。
Route::group(['prefix' => 'api'], function() {
// Not explicitly behind a middleware
// However a controller could still have a middleware injected.
Route::controller('Auth/AuthController');
// Authenticated Routes
Route::group(['middleware' => 'auth'], function() {
Route::get('secret', 'SecretsController@index');
});
});