我在使用中间件多角色进行路由时遇到问题 我已经在互联网上尝试过一些,但仍然无法正常工作
我有3个角色,超级管理员,管理员和成员 我希望超级管理员和管理员可以访问添加页面
这是我的代码:
update mysql.user set password=PASSWORD=('password') where user='root';
我试图放Route::group(['prefix' => 'staff', 'middleware' => 'auth'], function () {
Route::GET('/add', [
'uses' => 'StaffController@page_add',
'middleware' => 'rule:superadmin', ???
]);
});
但不会工作
谢谢
答案 0 :(得分:0)
创建一个中间件文件,例如Role.php
public function handle($request, Closure $next, ... $roles)
{
if (!Auth::check()) // I included this check because you have it, but it really should be part of your 'auth' middleware, most likely added as part of a route group.
return redirect('login');
$user = Auth::user();
if($user->isAdmin())
return $next($request);
foreach($roles as $role) {
// Check if user has the role This check will depend on how your roles are set up
if($user->hasRole($role))
return $next($request);
}
return redirect('login');
}
最后在您的网络路线中
Route::get('admin/scholen/overzicht', 'SchoolsController@overview')->middleware('role:editor,approver');
Route::get('admin/scholen/{id}/bewerken', 'SchoolsController@edit')->middleware('role:admin');
查看此best answer以获得更多详细信息
答案 1 :(得分:0)
嘿,您可以在用户表中放置一个名为“角色”的列,然后使用条件进行检查。
Route::get('/add', function() {
if (Auth::user()->role == 'superadmin' || Auth::user()->role == 'admin') {
return view('add-page');
}
else {
return view('error-page');
}
});