4

私たちはlaravelアプリケーションを開発しています。アプリケーションには、routesファイル内の管理者ユーザーのみがアクセスできる管理部分があります。

 Route::group(['middleware' => 'admin', 'prefix' => 'admin', 'namespace'
              => 'Admin'] , function() {
       Route::get('oldAdminUrl', 'oldControllwe@handle');

  }

ファイルのmiddlewareハンドル関数は次のようになります

public function handle($request, Closure $next)
{       
   if ($this->admin->guest())
    {
        //some code here
    }

    return $next($request);
}

次の属性で呼び出される$this->Admin参照先 の広告ModeladminModel

 protected $table = 'admin'

ここで、管理者 URL のグループに新しい URL を追加する必要があります。それを呼び出しましょう newAdminUrl。管理者ユーザーと新しいユーザー グループの両方がアクセスできるようにする必要があります。editors

その URL を の外に置きadmin group、新しいものを割り当てることをお勧めします。アクセスしたいユーザーが編集者グループまたは管理者グループのいずれかに属しており、編集者が別のテーブルに保存されているかどうかを確認するために、追加middlewareで呼び出しましょう。editorsMiddlewareadmin middlewarenewAdminUrl

 Route::group(['middleware' => ['admin','editors], 'prefix' => 'admin',      
     'namespace' => 'Admin'] , function() {
         Route::get('newAdminUrl', 'newControllwe@handle');

   }

EditorModel中で使用される には、次のeditorMiddleware属性があります。

     protected $table = 'editor'

質問: それを実装するための正しい、または良いアプローチは何ですか?または誰かがより良いアイデアや提案を持っていますか?

4

1 に答える 1

2

本当に、あなたが提案したアプローチは問題ありません。「admin」および「editor」ロールを持つユーザーが通過できる「editor」ミドルウェアを作成します。この方法で、多くの Laravel アプリにパーミッションを実装しました。ミドルウェア呼び出しを関連するコントローラーの __contruct() メソッドに移動して、ルート ファイルを簡素化し、各ルートのコード行を節約することを検討することもできますが、それはここでもそこでもありません。

于 2015-10-28T22:03:38.527 に答える