【问题标题】:Best practice for creating administrator area interface in Laravel 5在 Laravel 5 中创建管理员区域界面的最佳实践
【发布时间】:2015-06-22 04:51:14
【问题描述】:

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

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

由于 Laravel 5 在结构上与 Laravel 4 不同。

谁能帮我设置管理员区域的目录结构和路由。

提前谢谢你。

【问题讨论】:

  • 用简单的方法来做怎么样。您可以为所有管理视图创建资源/视图/管理员,然后为所有管理模型、控制器和其他管理内容创建 app\admin
  • 你见过这个包吗?适用于 laravel 5:github.com/serverfireteam/panel
  • @Digitlimit 感谢您的回复。今晚我会在你的第一条评论之后试一试。对于第二条评论:它很好,但在后端有一些问题并且不是没有错误的,你有更多这样的例子吗?
  • 你可以研究一下这个包并提一些想法
  • @Digitlimit 感谢您的帮助

标签: php laravel-5 admin


【解决方案1】:

我最近在 Laravel 5 中创建了一个带有管理区域的项目。我使用了高级 ACL(访问控制层)来赋予角色明智的管理员权限。为此,我使用了Entrust Package。然后我使用了 Laravel 5 的基本身份验证并实现了 Entrust。

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

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

希望对你有所帮助。

【讨论】:

    【解决方案2】:

    我通常制作自己的后端,使用 entrust 之类的包和适合我需要的随机引导模板。
    然后我将视图放在views/admin 中,将控制器放在Controller/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);
        }
    

    不要忘记在路由文件旁边的 kernel.php 中注册中间件。

    中间件可能看起来很复杂,但它只是检查您是否在组中添加了角色,然后检查当前登录的用户是否属于该组。

    另外请记住,当您使用action() 进行路由时,您需要将 admin 命名空间放在控制器名称之前,例如 action('Admin\HomeController@index')

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-04-13
      • 2018-09-12
      • 1970-01-01
      • 2018-09-24
      • 2023-03-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多