我正在尝试仅允许管理员用户在我的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
然而,当登录“管理员”用户时,我仍然看不到管理员内容。我对这个框架很新,但如果有人有任何建议我会非常感激!
谢谢,
萨姆
答案 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')