在 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(访问控制层)来授予角色明智的管理员权限。为此,我使用了 Entrust Package。然后我使用了 Laravel 5 的基本身份验证并实现了 Entrust.
我已经轻松创建了具有所有权限的管理区域。我还尝试在 Authenticate.php
中间件
中设置自动权限
你可以参考这个堆栈问题,我问过。但后来我找到了解决办法。
我建议您遵循基于 URL 的体系结构,然后使用旧的文件夹结构方式来管理管理员。 Laravel 5 最适合基于 URL,如果您将来需要移动应用程序,它还可以帮助您创建任何 API。
希望对您有所帮助。
我通常使用 entrust 之类的软件包和满足我需要的随机 bootstrap 模板来制作自己的后端。
然后我将我的视图放在 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()
进行路由时,您需要将管理命名空间放在控制器名称之前,例如 action('Admin\HomeController@index')
我最近开始学习Laravel 5,我需要在站点内创建一个单独的管理员区域。
我已经尝试了很多来获取文件目录结构,但我得到的大部分都是 Laravel 4 而不是 Laravel 5.
因为 Laravel 5 与 Laravel 4 的结构不同。
任何人都可以帮助我如何设置管理员区域和路由的目录结构。
提前致谢。
我最近在 Laravel 5 中使用管理区域创建了一个项目。我曾使用高级 ACL(访问控制层)来授予角色明智的管理员权限。为此,我使用了 Entrust Package。然后我使用了 Laravel 5 的基本身份验证并实现了 Entrust.
我已经轻松创建了具有所有权限的管理区域。我还尝试在 Authenticate.php
中间件
你可以参考这个
希望对您有所帮助。
我通常使用 entrust 之类的软件包和满足我需要的随机 bootstrap 模板来制作自己的后端。
然后我将我的视图放在 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()
进行路由时,您需要将管理命名空间放在控制器名称之前,例如 action('Admin\HomeController@index')