Laravel 5.3 的 Authorization 使用非常方便,一般的用法是在 Controller 中手动调用.
1 | 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'); |
一试果然管用。