【问题标题】:Laravel 5.1 Passing Parameters to Middleware with Route GroupsLaravel 5.1 使用路由组向中间件传递参数
【发布时间】:2015-10-31 12:41:03
【问题描述】:

我正在尝试为我正在处理的 API 实现一个 JWT 库,并且我希望能够将我的整个 API 路由组包装在令牌检查中,并带有少量异常。我遇到的问题不是 JWT 特有的。

在控制器构造函数中,当我应用中间件时,我可以使用此语法将 jwt.auth 应用到整个控制器并排除“身份验证”端点。

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']]);
    }

当我尝试在我的路由组中做同样的事情时,我无法让“异常”数组正确传递。这会导致身份验证方法需要一个令牌(它不需要,因为它是检索令牌的端点)。

Route::group(['prefix' => 'api', 'middleware' => 'jwt.auth', 'except' => ['authenticate']], function()
{
    Route::resource('authenticate', 'AuthenticateController', ['only' => ['index']]);
    Route::post('authenticate', 'AuthenticateController@authenticate');
});

我感觉这是一个语法问题,但我找不到其他人问这个问题,并且解析器不会对此感到窒息,它只是不起作用。任何帮助将不胜感激!

【问题讨论】:

    标签: laravel laravel-routing jwt laravel-5.1


    【解决方案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');
        });
    });
    

    【讨论】:

    • 啊,好吧,应该可以的。我想我是从里到外看的。感谢您为我澄清这一点!
    • 您忘记关闭第二组声明中的“[”
    猜你喜欢
    • 1970-01-01
    • 2020-05-16
    • 2020-01-23
    • 1970-01-01
    • 2018-07-26
    • 1970-01-01
    • 2016-04-13
    • 1970-01-01
    • 2015-10-26
    相关资源
    最近更新 更多