0

找不到任何与我的情况特别匹配的东西。我有一个路由组定义为:

Route::group(['prefix' => 'api/v1/{access_token}'], function(){
    ...
}

上面的组里面有几个资源路由。我正在尝试创建一个自定义中间件,该中间件将验证access_token参数并在参数无效时返回 400 响应。我希望能够在我的控制器中这样做:

class ProductController extends Controller {

    /**
     * Instantiate a new ProductController
     */
    public function __construct()
    {
        $this->middleware('verifyAccessToken');
    }
    ...
}

我的问题不是“如何定义自定义中间件”,而是如何从自定义中间件的函数中访问access_token参数?handle

编辑:虽然建议作为重复的问题是相似的并且有答案,但该答案似乎已经过时和/或对我想要完成的工作不满意。

4

3 回答 3

1

$request您可以使用如下魔术__get方法从您的对象中访问它:

public function handle($request, Closure $next)
{
    $token = $request->access_token;
    // Do something with $token
}
于 2015-11-12T18:23:33.853 回答
0

http://laravel.com/docs/master/middleware#middleware-parameters

对于简单的

public function yourmethod($access_token){
    $this->middleware('verifyAccessToken', $access_token);
}

我认为你不能在__construct()方法上做到这一点。

于 2015-11-12T18:22:24.030 回答
0

只需将中间件粘贴在 Route::group 上

Route::group(['prefix' => 'api/v1/{access_token}', 'middleware' => 'verifyAccessToken'], function(){

});

然后在您的中间件中,正如 Thomas Kim 指出的那样,您可以使用该$request对象来访问传递给路由的令牌。

public function handle($request, Closure $next)
{
    $token = $request->access_token;
    // Do something with $token
}
于 2015-11-12T18:26:02.917 回答