找不到任何与我的情况特别匹配的内容。我有一个路由组定义为:
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');
}
...
}
我的问题不是"如何定义自定义中间件",而是如何从自定义中间件的handle
函数中的访问access_token
参数?
编辑:虽然作为副本提出的问题是相似的,并且有答案,但这个答案似乎已经过时和/或不符合我想要实现的目标。
您可以使用神奇的__get
方法从$request
对象访问它,如下所示:
public function handle($request, Closure $next)
{
$token = $request->access_token;
// Do something with $token
}
http://laravel.com/docs/master/middleware#middleware-参数
对于简单
public function yourmethod($access_token){
$this->middleware('verifyAccessToken', $access_token);
}
我认为你不能用__construct()
方法来做。
只需将中间件粘在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
}