Laravel 5.3 中使用Authorizatioin Middleware时,参数不能正确解析

Laravel 5.3 的 Authorization 使用非常方便,一般的用法是在 Controller 中手动调用.

1
2
3
if ($user->can('view', $post)) {

}

这已经非常方便了,但是 Laravel 还提供了一种更方便的方法,使用 Middleware 在 Route 中 authorization.
但是我按官方文档上的说明进行调用,参数总不能正确解析:

1
Route::get('/posts/{post}', 'PostController@show')->middleware('can:view,post');

通过这样调用,Controller 中接到的参数仍然是 post id, 是个数字。

放狗搜了一下才知道,原来是需要先使用 Middleware bings 来对参数进行绑定。代码如下:

1
Route::get('/posts/{post}', 'PostController@show')->middleware('bindings', 'can:view,post');

一试果然管用。