用户和管理员分离的路由Laravel

时间:2017-07-25 12:45:20

标签: laravel laravel-5 laravel-routing

我试图将用户与管理员分开,并禁止用户访问管理部门。

我的目录结构是

resources/
  -views/
    --site/
      ---users/
      ---admin/

web.php我添加了此

Route::get ('/', ['uses' => 'HomeController@index']);

Route::auth();
Route::group(['middleware' => ['auth'], 'namespace' => 'users', 'prefix' => 'site/users'], function() {

   // users routes
});

Route::group(['middleware' => ['auth'], 'namespace' => 'admin', 'prefix' => 'site/admin'], function() {

   // admin routes
   Route::get ('/admin', ['uses' => 'AdminController@index', 'before' => 'admin']);
});

当我以管理员身份登录并尝试打开http://example.com/admin时,我已经

  

(1/1)NotFoundHttpException

用户也是如此。

我在数据库is_admin中有一个列,我在登录时检查并存储在会话中。

2 个答案:

答案 0 :(得分:3)

我想你可以试试这个:

"dev": "set NODE_ENV=dev && webpack-dev-server",

希望这对你有用!!!

答案 1 :(得分:3)

您需要的是在AdminMiddleware中创建App\Http\Middleware

php artisan make:middleware AdminMiddleware

新建中间件内置

public function handle($request, Closure $next)
{
    if ($request->user()->type != 'A')
    {
        return redirect('home');
    }

    return $next($request);
}

根据您在存储用户会话的问题中发表评论并选中is_admin列,您需要更改if()中的支票。如果您使用Auth将是这样的

if (Auth::user()->is_admin != 1) {...}

is_admin列中的任何内容。然后在您的路线中,您可以像这样访问它

Route::group(['middleware' => 'App\Http\Middleware\AdminMiddleware'], function()
{
    Route::get ('/admin', ['uses' => 'AdminController@index', 'before' => 'admin']); 

});

Source