如何在路线中添加角色?
问题描述:
这是我目前的路线:(工作以及)如何在路线中添加角色?
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']);
答
Route::get('/register', '[email protected]')->name('register')->middleware('role:admin');
我猜你想要这个
多个
Route::group(['middleware' => ['role:Normal_User,Admin']], function() {
Route::get('/register', '[email protected]');
});
答
通过将中间件名称和参数分隔为:来定义路由时,可以指定中间件参数。多个参数应该用逗号分隔。
你可以使自己的中间件:
<?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
,当我们已经阵列的什么角色?像'['admin','user']' –
尝试编辑ans @MartinAJ – Exprator