2017-08-01 45 views
0

這是我目前的路線:(工作以及)如何在路線中添加角色?

Route::get('/register', ['uses' => '[email protected]','as'=>'register','middleware' => 'roles', 'roles' => ['admin'] ]); 

現在我想知道,我該如何使用role當我寫這樣->middleware('role')中間件?


注:這不起作用:

Route::get('/register', '[email protected]')->name('register')->middleware('role')->role(['admin']); 

回答

1
Route::get('/register', '[email protected]')->name('register')->middleware('role:admin'); 

我猜你想要這個

多個

Route::group(['middleware' => ['role:Normal_User,Admin']], function() { 
     Route::get('/register', '[email protected]'); 
    }); 
+0

,當我們已經陣列的什麼角色?像'['admin','user']' –

+0

嘗試編輯ans @MartinAJ – Exprator

1

通過將中間件名稱和參數分隔爲:來定義路由時,可以指定中間件參數。多個參數應該用逗號分隔。

你可以使自己的中間件:

<?php 

namespace App\Http\Middleware; 

use Closure; 

class CheckRole 
{ 
    /** 
    * Handle the incoming request. 
    * 
    * @param \Illuminate\Http\Request $request 
    * @param \Closure $next 
    * @param string $role 
    * @return mixed 
    */ 
    public function handle($request, Closure $next, $role) 
    { 
     if (! $request->user()->hasRole($role)) { 
      // Redirect... 
     } 

     return $next($request); 
    } 

} 

,並調用它是這樣的:

Route::get('/register', '[email protected]')->name('register')->middleware('role:editor');

來源:https://laravel.com/docs/5.4/middleware#middleware-parameters