在Laravel 5中创建管理员区域界面的最佳实践


Best practice for creating administrator area interface in Laravel 5

我最近开始学习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')