4

我们正在开发一个 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引用的 广告ModeladminModel

 protected $table = 'admin'

现在我们需要向管理员 url 组添加一个新的 url,让我们称之为它 newAdminUrl应该对管理员用户和新的用户组都可以访问,让我们称之为editors

admin group将该 url 放在外部并分配一个新middleware的让我们调用它以检查想要访问的用户是否在编辑器组或管理员组中以及编辑器存储在另一个表中是一个好习惯editorsMiddlewareadmin middlewarenewAdminUrl

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

   }

EditorModel里面使用的whicheditorMiddleware有这个属性:

     protected $table = 'editor'

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

4

1 回答 1

2

确实,您建议的方法很好。创建一个“编辑器”中间件,允许具有“管理员”和“编辑器”角色的用户通过。我已经在许多 Laravel 应用程序中以这种方式实现了权限。您可能需要考虑将中间件调用移至相关控制器的 __contruct() 方法,以简化您的路由文件并为每个路由保存一行代码,但这既不是这里也不是那里。

于 2015-10-28T22:03:38.527 回答