2017-08-01 46 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