仅启用管理员以在Laravel中查看页面

时间:2016-08-25 08:37:17

标签: php laravel

我正在尝试仅允许管理员用户在我的laravel项目中查看导航栏的某些内容。我有一个users表,其中包含一个“admin”和“user”值的角色列,我在中间件中使用这些值,以允许管理员用户访问CRUD操作的管理面板。

我试过了:

@if(auth()->check())
 @if(Auth::user()->get(array('users.role')) == 'admin')

  'THIS IS WHAT I WANT ONLY ADMIN USERS TO SEE!'

 @endif
@endif

然而,当登录“管理员”用户时,我仍然看不到管理员内容。我对这个框架很新,但如果有人有任何建议我会非常感激!

谢谢,

萨姆

2 个答案:

答案 0 :(得分:5)

试试这个:

@if (Auth::user() && Auth::user()->role == 'admin')
    'THIS IS WHAT I WANT ONLY ADMIN USERS TO SEE!'
@endif

Auth::user()Auth::check()相同,它会检查用户是否经过身份验证。只有在用户通过身份验证后,Laravel才会运行Auth::user()->role == 'admin',这将检查用户是否为管理员。

答案 1 :(得分:5)

您可以创建一个单独的管理中间件组:

 public function handle($request, Closure $next, $guard = null)
    {
        if(Auth::check())
        {
            if($request->user()->role=='admin')
            {
               return $next($request);
            }
             return redirect('/');    
        }

        return redirect('/login');
    }

这样您就可以保护只允许管理员的路线:

Route::group(['middleware' => ['App\Http\Middleware\Adminmiddleware']], function () {
             //admin routes

    });

对于您的代码,您可以查看:

if(Auth::user()->role == 'admin')