授予Laravel 5中

时间:2015-10-28 16:11:55

标签: php laravel laravel-5 role-base-authorization

我们正在开发一个laravel应用程序,该应用程序有一个管理部分,只有我们拥有的routes文件中的管理员用户才能访问:

 Route::group(['middleware' => 'admin', 'prefix' => 'admin', 'namespace'
              => 'Admin'] , function() {
       Route::get('oldAdminUrl', 'oldControllwe@handle');

  }

middleware文件的句柄功能类似于

public function handle($request, Closure $next)
{       
   if ($this->admin->guest())
    {
        //some code here
    }

    return $next($request);
}

广告$this->Admin引用名为Model的{​​{1}},其中包含以下属性

adminModel

现在我们需要在管理网址组中添加一个新网址,让我们调用它 protected $table = 'admin' 对于管理员用户而言,它应该是可访问的,并且还有一组新用户可以调用它们newAdminUrl

最好将该网址放在editors之外并为其分配一个新的admin group,然后再将其middleware称为editorsMiddleware,以检查用户是否谁想要访问admin middleware是在编辑组或管理员组中,编辑器存储在另一个表中

newAdminUrl

Route::group(['middleware' => ['admin','editors], 'prefix' => 'admin', 'namespace' => 'Admin'] , function() { Route::get('newAdminUrl', 'newControllwe@handle'); } 中使用的EditorModel具有以下属性:

editorMiddleware

问题: 实施它的正确方法甚至是好方法是什么?或者任何人有更好的想法或建议?

1 个答案:

答案 0 :(得分:2)

真的,你提出的方法很好。创建一个'编辑器'中间件,允许用户使用' admin'和'编辑'角色传递。我已经在许多Laravel应用程序中以这种方式实现了权限。您可能需要考虑将中间件调用移动到相关控制器的__contruct()方法,只是为了简化路由文件并为每条路由保存一行代码,但这既不在这里也不在那里。