assign separate middleware to each method of a resource in laravel

白昼怎懂夜的黑 提交于 2020-12-26 14:22:07

问题


I am using Zizaco/entrust laravel package as a ACL Manager for my project.

I know that for limit access to a route group via middlewares and assign a role (or permission) to it, I should do that like this:

Route::group(['prefix' => 'admin', 'middleware' => ['role:admin']], function() {
    ....
});

But I want to assign separate permission to different routes(methods) of a resource controller.

I know that how can so that for whole resource but I can not implement it for each controller method:

Route::group(['prefix' => 'admin', 'middleware' => ['role:admin']], function() {
        Route::resource('/post', ['middleware' => ['permission:manage-posts'], 'uses' => 'PostController']);

    });

I want to assing this permission to related method :

'post-create' => public function create ()  
'post-edit' => public function edit()

and so on.


回答1:


You can assign middlewares in your controller's constructor:

class Foo extends Conroller
{
    public function __construct() {

        $this->middleware('post-create', ['only' => ['create']]);

        $this->middleware('post-edit', ['only' => ['edit']]);
    }
}


来源:https://stackoverflow.com/questions/36444779/assign-separate-middleware-to-each-method-of-a-resource-in-laravel

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!