首页 文章

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

提问于
浏览
3

我正在尝试只允许管理员用户在我的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 回答

  • 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' ,这将检查用户是否为管理员 .

  • 4

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

    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')
    

相关问题