限制用户使用中间件-Laravel

时间:2018-10-05 09:48:41

标签: php laravel

我在应用adminusers中扮演两个角色。这两个角色都使用名为auth的中间件。现在在应用程序中,当我以管理员身份登录时,我无法路由到用户页面(完美)。

但是当我以用户身份登录时,我可以路由到管理页面,但是我的身份验证必须阻止用户访问管理页面。目前,这就是我的问题...我在做什么不对?

下面是我的代码

AuthMiddleWare

 if (Auth::check())
        {

        if(Auth::user()->roles->pluck('name')->first() == "admin")
        {
            // return $next($request);
            return Redirect::to('/admin/dashboard');

        }

        else if(Auth::user()->roles->pluck('name')->first() == "user")
        {
            return Redirect::to('/user/dashboard/');
        }

        else{
            return Redirect::to('login');
        }
    }

路线

Route::group(array('prefix' => 'admin', 'namespace' => 'Admin', 'middleware' => ['auth']), function () {

    Route::get('dashboard','Controller@show');

}

Route::group(array('prefix' => 'user', 'namespace' => 'User', 'middleware' => ['auth']), function () {

    Route::get('dashboard','Controller@show');

}

2 个答案:

答案 0 :(得分:0)

尝试以下代码:

if (Auth::check())
{
    if(in_aaray('admin', Auth::user()->roles->pluck('name')->all()))
    {
        // return $next($request);
        return redirect('/admin/dashboard');
    }
    else if(in_array('user', Auth::user()->roles->pluck('name')->all()))
    {
        return redirect('/user/dashboard/');
    }
    else{
        return redirect('login');
    }
}else{
    return redirect('login');
}

答案 1 :(得分:-1)

您需要在laravel中进行自定义身份验证,并为管理员和用户创建不同的表