Laravel路线与委托

时间:2016-06-02 13:39:12

标签: php laravel entrust

我尝试使用我的Laravel代码进行Entrust。 此刻,我有用户,权限和角色。

创建管理员面板,您可以在其中访问“权限”==“admin - panel”

我希望它由文件routes.php

完成

我的档案: 中间件/ EntrustMiddleware.php

class EntrustMiddleware
{
    /**
     * Handle an incoming request.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  \Closure  $next
     * @return mixed
     */
    public function handle($request, Closure $next)
    {
        if (!Entrust::can('admin-panel')) {
        return Redirect::to('home');
        }
        return $next($request);
    }
}

routes.php文件

Route::get('admin-panel', ['middleware' => ['auth', 'Entrust'], function () {

}]);

我尝试了很多方法,但仍然无效。任何人都可以建议如何设置文件“routes.php”访问“管理 - 面板/”只有当“权限”==“admin-panel”

- 编辑 -

当我使用这种方法时,我得到错误:

Route::group(['middleware' => ['Entrust']], function () {
    //put your routes here
    Route::get('/admin', 'Admin\AdminController@index');
});

Pipeline.php第136行中的ErrorException:call_user_func_array()期望参数1是有效的回调,类'Zizaco \ Entrust \ EntrustFacade'没有方法'handle'

- EDIT2 -

['middleware' => ['permission:NAME']]

现在我明白了:)

Contoller我是否必须添加一些额外的安全性?

1 个答案:

答案 0 :(得分:1)

如果您使用entrust,对于您希望允许特定routes访问的所有roles,您只需将其放入群组中即可完成工作,据说,这就是它的样子,

Route::group(['middleware' => ['add roles name here']], function () {
  //put your routes here
});