Laravel在中间件

时间:2015-11-12 18:18:12

标签: php laravel laravel-5.1 laravel-middleware

找不到与我的情况特别相符的任何内容。我有一个路由组定义为:

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参数的访问权限?自定义中间件?

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

3 个答案:

答案 0 :(得分:1)

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

public function handle($request, Closure $next)
{
    $token = $request->access_token;
    // Do something with $token
}

答案 1 :(得分:0)

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

简单

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

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

答案 2 :(得分: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
}