我们正在开发一个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
问题: 实施它的正确方法甚至是好方法是什么?或者任何人有更好的想法或建议?
答案 0 :(得分:2)
真的,你提出的方法很好。创建一个'编辑器'中间件,允许用户使用' admin'和'编辑'角色传递。我已经在许多Laravel应用程序中以这种方式实现了权限。您可能需要考虑将中间件调用移动到相关控制器的__contruct()方法,只是为了简化路由文件并为每条路由保存一行代码,但这既不在这里也不在那里。