Laravel中间件多角色路由

时间:2019-05-03 09:47:36

标签: laravel laravel-5

我在使用中间件多角色进行路由时遇到问题 我已经在互联网上尝试过一些,但仍然无法正常工作

我有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', ??? ]); }); 但不会工作

谢谢

2 个答案:

答案 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');
    } 
  });