我们正在开发一个laravel应用程序,该应用程序有一个管理部分,只有我们拥有的路径文件中的管理员用户才能访问:
Route::group(['middleware' => 'admin', 'prefix' => 'admin', 'namespace'
=> 'Admin'] , function() {
Route::get('oldAdminUrl', 'oldControllwe@handle');
}
中间件文件的句柄功能就像
public function handle($request, Closure $next)
{
if ($this->admin->guest())
{
//some code here
}
return $next($request);
}
ad $this-> Admin引用名为adminModel的Model,其属性如下
protected $table = 'admin'
现在我们需要在管理网址组中添加一个新网址,让我们调用它
newAdminUrl对于管理员用户和新用户组都应该是可访问的,让我们称他们为编辑者
将该URL放在admin组之外并为其分配一个新的中间件是一个很好的做法,让我们将其称为editorsMiddleware,添加到管理中间件,以检查想要访问newAdminUrl的用户是在编辑器组还是管理员组和编辑器中存储在另一个表中
Route::group(['middleware' => ['admin','editors], 'prefix' => 'admin',
'namespace' => 'Admin'] , function() {
Route::get('newAdminUrl', 'newControllwe@handle');
}
在editorMiddleware中使用的EditorModel具有以下属性:
protected $table = 'editor'
问题:
实施它的正确方法甚至是好方法是什么?或者任何人有更好的想法或建议?
最佳答案 真的,你提出的方法很好.创建一个“编辑器”中间件,允许具有“管理员”和“编辑”角色的用户通过.我已经在许多Laravel应用程序中以这种方式实现了权限.您可能需要考虑将中间件调用移动到相关控制器的__contruct()方法,以简化路由文件并为每个路由保存一行代码,但这既不在这里也不在那里.