2017-08-02 23 views
0

我有問題,在我的Route::middleware中使用多個參數對我來說不起作用。我試圖分配一個特定的路線,只能訪問超級用戶admin角色。Laravel路由中的多個參數middelware不起作用

當我只是用:

role:superuser 

它工作正常,但是當我添加第二個參數,如:

role:superuser,admin 

失敗的時候我給你自己的管理員作用,但仍然有效爲超級用戶作用。

我很困惑,所以任何幫助將不勝感激!


這裏是我的RoleMiddleware:

namespace App\Http\Middleware; 

use Closure; 

class RoleMiddleware 
{ 

/** 
* Handle an incoming request. 
* 
* @param \Illuminate\Http\Request $request 
* @param \Closure $next 
* @param string $roles 
* @return mixed 
*/ 

public function handle($request, Closure $next, ...$roles) 
{ 
    $user = $request->user(); 

    if ($user && $user->isSuperuser($roles)) { 
     return $next($request); 
    } 

    return redirect('/home')->withError('U heeft niet de juiste rechten!'); 

    } 
} 

這裏是我的用戶模型我isSuperuser方法:

public function isSuperuser(...$roles) 
{ 
    if ($roles) { 
     return $this->roles == $roles; 
    } 

    return $this->roles; 
} 

最後但並非最不重要的我的路線/網頁代碼中間件:

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

btw:該方法被稱爲'isSuperuser'但這只是一個名稱。它也必須在某個時候接受角色。

+0

若要應用多箇中間件的路線,我認爲你必須添加項目到一個數組。 I.e ....->中間件(['role:superuser','role:admin']); – ochhii

回答

0

使用|代替,這樣的:

Route::get('/users', '[email protected]')->middleware(['role:superuser|admin']); 
+0

感謝您的回覆,但不幸的是它不工作。 – Brnovich