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

时间:2015-06-22 04:51:15

标签: php laravel-5 admin

我最近开始学习Laravel 5,我需要在网站内创建一个单独的管理员区域。

我已经尝试了很多文件目录结构,但我得到的大部分是Laravel 4而不是Laravel 5。

Laravel 5的结构与Laravel 4不同。

任何人都可以帮我如何设置管理员区域和路线的目录结构。

提前谢谢。

2 个答案:

答案 0 :(得分:2)

我最近在Laravel 5中使用Admin区域创建了一个项目。我曾使用高级ACL(访问控制层)来提供角色管理员权限。为此,我使用了Entrust Package。然后我使用了Laravel 5的基本版本并实现了Entrust。

我已经轻松创建了具有所有权限的管理区域。我还尝试在Authenticate.php中间件

中设置自动权限

我可以参考这个Entrust Automate堆栈问题。但后来我找到了解决方案。 我建议你遵循基于URL的架构,然后使用旧的文件夹结构方式来管理Admin。 Laravel 5最适合基于URL,如果您将来需要移动应用程序,它还可以帮助您创建任何API。

希望这会对你有所帮助。

答案 1 :(得分:2)

我通常使用entrust等软件包以及符合我需求的随机引导程序模板制作自己的后端。
然后我只是将我的视图放在Controller / admin中的views / admin和我的控制器中,并将所有管理路由放在一个附有中间件的组中

    Route::group(['namespace'=>'Admin','prefix'=>'admin','middleware'=>'role','role'=>'admin'],function(){
        Route::get('/','HomeController@index');
}

然后在中间件中(这是使用entrust)。

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')