2017-01-01 7 views
0

問題Laravel 5.3保護ルートが異なる役割を持っている

私は彼らに属していないアクセスルートからユーザーを保護するための方法、例えば、管理者はユーザ領域とシンプルなユーザーにアクセスすることはできません探していアクセスできない管理エリア

こんにちは、私はlaravel 5.3アプリをしましたし、それがユーザー

  1. 管理
  2. シンプルなユーザー
  3. の2種類があります

私は、私は多くのことを検索しsimple userルートとその逆へのアクセスadminを防ぐためにしようと、私が何をやったかのミドルウェア

を作成するための1つの解決策を見つけたんだ

<?php 

namespace App\Http\Middleware; 

use Auth; 

use Closure; 

class UserRole 
{ 
    /** 
    * Handle an incoming request. 
    * 
    * @param \Illuminate\Http\Request $request 
    * @param \Closure $next 
    * @return mixed 
    */ 
    public function handle($request, Closure $next) 
    { 
     if (Auth::check()) // user logged 
     { 
      $request_url = $request->getRequestUri(); 
      if(Auth::user()->user_type == 1) // simple user 
      { 
       // checking if simple user is visiting routes    // starts with /user in the url 
       if (strpos($request_url, "/user") === 0) 
       { 
        return $next($request); 
       } 
       else 
       { 
        return redirect('/'); 
       } 
      } 
      // checking if admin is visiting routes     // starts with /admin in the url 
      else if(Auth::user()->user_type == 2) // admin 
      { 
       if (strpos($request_url, "/admin") === 0) 
       { 
        return $next($request); 
       } 
       else 
       { 
        return redirect('/'); 
       } 
      } 
      else 
      { 
       return redirect('/'); 
      } 
     } 
     return redirect('/'); 
    } 
} 

残念なことに、両者は互いに制限されたエリアにアクセスすることができます。私は、ユーザーがアクセス権を持たない経路にアクセスするのを防ぐより良い方法を見つけることができません。

答えて

0

あなたは次の操作を行う必要があるミドルウェア使用していることを達成したい場合は -

  1. は2つのミドルウェア、管理者用とシンプルなユーザーのための1つを作成します。

  2. 、ファイル、あなたのルートに2つのルートグループを作成する、すなわちroutes/web.php

  3. 守る1つのルート管理ミドルウェアを持つグループ、およびそのグループにあなたの管理者に関連するすべてのルートを置きます。別のルートグループを保護する シンプルユーザミドルウェアとそのグループにすべての管理者関連ルートを入れてください。

Route::group(['middleware' => ['auth', 'admin']], function() { 
    // put all your admin routes here 
}); 

Route::group(['middleware' => ['auth', 'simple-user']], function() { 
    // put all your simple user routes here 
}); 

また、役割と権限を使用していることを達成することができます。ここにあなたのニーズを満たすことができるパッケージです。

https://packagist.org/packages/zizaco/entrust

関連する問題