代码之家  ›  专栏  ›  技术社区  ›  user8323337

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

  •  1
  • user8323337  · 技术社区  · 7 年前

    我试图将用户和管理员分离,并禁止用户访问管理部分。

    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 回复  |  直到 7 年前
        1
  •  3
  •   S.I.    7 年前

    例如,您需要创建 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) {...}
    

    或者任何你想要的东西

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

    Source .

        2
  •  3
  •   AddWeb Solution Pvt Ltd    7 年前

    我想你可以试试这个:

    Route::group(['middleware' => ['auth'], 'namespace' => 'admin', 'prefix' => 'admin'], function() { 
      // admin routes 
      Route::get ('/', ['uses' => 'AdminController@index', 'before' => 'admin']); 
    });
    

    希望这为你工作!!!