我最近开始学习Laravel 5,我需要在网站内创建一个单独的管理员区域。
我试过很多次来获得文件目录结构,但我得到的大多数都是Laravel 4,而不是Laravel 5。
由于Laravel 5在结构上与Laravel 4不同。
有人能帮我如何设置管理员区域的目录结构和路由吗。
提前谢谢。
我最近在Laravel 5中创建了一个带有管理区域的项目。我使用了高级ACL(访问控制层)来授予角色管理权限。为此,我使用了委托包。然后我使用了Laravel 5的基本授权,并实现了Entrust。
我已经很容易地创建了具有所有权限的管理区域。我还尝试在Authenticate.php
中间件中设置自动权限
你可以参考我问过的这个"委托自动化"堆栈问题。但后来我找到了解决办法。我建议你遵循基于URL的架构,然后使用文件夹结构的旧方式来管理管理员。Laravel 5最适合基于URL的应用程序,如果您将来需要移动应用程序,它还可以帮助您创建任何API。
希望这对你有帮助。
我通常制作自己的后端,使用像委托这样的包和符合我需求的随机引导模板
然后,我只需将我的视图放在views/admin中,将我的控制器放在Controller/admin中,并将所有管理路由放在一个带有中间件的组中
Route::group(['namespace'=>'Admin','prefix'=>'admin','middleware'=>'role','role'=>'admin'],function(){
Route::get('/','HomeController@index');
}
然后在中间件中(这是使用委托)。
public function handle($request, Closure $next)
{
$user = $this->auth->user();
$route = $request->route();
if($user && $route)
{
$actions = $route->getAction();
if(array_key_exists('role',$actions)) {
$role=$actions['role'];
if(!$user->hasRole($role)) {
Flash::error('Unauthorized Access');
abort(401);
}
}
else
{
Flash::error('Unauthorized Access');
abort(401);
}
}
else
{
Flash::error('Unauthorized Access');
abort(401);
}
return $next($request);
}
不要忘记在routes文件旁边的kernel.php中注册中间件。
中间件可能看起来很复杂,但它只是检查您是否在组中放置了一个角色,然后检查当前登录的用户是否属于该组。
还要记住,当您使用action()
进行路由时,需要将admin命名空间放在控制器名称之前,如action('Admin'HomeController@index')