猿问

如何验证用户是否已登录?只有当用户登录时我才需要显示内容。这是我使用的代码

@if(auth()->user()->isAdmin())


content


@endif



@if(auth()->user()->isNormal())


content 


@endif

然后如果用户未登录,我会收到此错误:


调用(user.blade.php 的路径)isAdmin()上的成员函数null


拉莫斯之舞
浏览 223回答 3
3回答

慕标琳琳

这个错误,Call to a member function isAdmin() on null告诉你的是,没有任何对象附加到你调用函数的任何地方。在这种情况下,它是经过身份验证的用户。这意味着当您调用isAdmin().您可以通过首先检查用户是否登录来避免它。@Alberto 为您提供了不同的选择。此外,您可以if像这样调整您的陈述:@if( auth()->check() && auth()->user()->isAdmin() )...@if( auth()->check() && auth()->user()->isNormal() )在这里,第一个条件检查是否有经过身份验证的用户,第二个条件只有在第一个语句返回时才会检查true。附带说明一下,您可以使用Policiesor/andGate来实现更强大的授权逻辑。

慕雪6442864

You can change your code like shown below@auth  content if user is logged in@endauth@guest  content if user is not logged in @endguest

慕森卡

正如您在此页面上看到的,有一个@auth ... @endauth指令检查用户是否已登录(由 完成的相同操作@if (Auth::check())),相反,检查用户是否未登录(由@guest ... @endguest完成的相同操作@if (!Auth::check()))。
随时随地看视频慕课网APP
我要回答