繁体   English   中英

授予Laravel 5中新角色的许可

[英]grant permission to a new role in Laravel 5

我们正在开发一个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);
}

ad adminModel $this->Admin引用名为adminModel Model ,其属性如下

 protected $table = 'admin'

现在我们需要在管理网址组中添加一个新的网址,让我们称之为newAdminUrl它应该是管理员用户的可访问权限,也是一组新的用户,让我们称之为editors

将该URL放在admin group之外并为其分配一个新的middleware是一个很好的做法,让我们将其称为editorsMiddleware ,添加到admin middleware以检查想要访问newAdminUrl的用户是在编辑器组还是管理员组和编辑器中存储在另一个表中

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

   }

EditorModel中使用的editorMiddleware具有以下属性:

     protected $table = 'editor'

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM