我对laravel非常陌生,所以我老实说不确定要提供哪些信息,但我会尽我所能来全面提问。
让我们来看看我的代码:
@if(Auth::guard('admin')->check() || Auth::guard('web')->check())
<li class="dropdown">
<a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-expanded="false">
{{ Auth::user()->name }} <span class="caret"></span>
</a>
{{-- Authenticated Dropdown Menu --}}
<ul class="dropdown-menu" role="menu">
{{-- Admin Links --}}
@if (Auth::guard('admin')->check())
<li><a href="{{ route('posts.index') }}">Manage Blog Posts</a></li>
<li role="separator" class="divider"></li>
@endif
{{-- User Links --}}
@if (Auth::guard('web')->check() || Auth::guard('admin')->check())
<li><a href="#">User Test Link</a></li>
<li role="separator" class="divider"></li>
@endif
{{-- Logout and Form --}}
<li>
<a href="{{ route('logout') }}"
onclick="event.preventDefault();
document.getElementById('logout-form').submit();">
Logout
</a>
{!! Form::open(['route' => 'logout', 'id' => 'logout-form', 'style' => 'display: none;']) !!}
{!! Form::close() !!}
</li>
{{-- End Logout Form --}}
</ul>
</li>
@else
<li><a href="{{ route('login') }}">Login</a></li>
<li><a href="{{ route('register') }}">Register</a></li>
@endif
现在我认为Auth::guard('admin')->check()
返回true或false,具体取决于用户是否具有身份验证。我还需要针对两个警卫运行此if语句,并检查管理员是否已登录或用户是否已登录。
基本上,正如你可以从我的代码中看到的那样,我希望登录时显示引导下拉列表,如果没有则显示登录和注册按钮。
那么如果在下拉列表中记录了User
,则不会显示&#34;管理博客帖子&#34;链接,因为那是Admin
链接...如果登录Admin
,则显示两个链接。
正如您在下面的代码片段中所看到的,这是相同的SAME EXACT if语句。这个工作正常,但父if语句似乎不想工作。
{{-- User Links --}}
@if (Auth::guard('web')->check() || Auth::guard('admin')->check())
<li><a href="#">User Test Link</a></li>
<li role="separator" class="divider"></li>
@endif
只有当我以管理员身份登录并尝试访问不受auth:admin
中间件保护的任何网页时,才会出现此错误。
我是否收到此错误,因为我错误地嵌套了我的if语句?也许我只是累了,需要第二眼才能看到最小的错误。我在YouTube上关注了DevMarketers Multi Auth教程,以帮助您进行设置。
(DevMarketer的YouTube多重身份验证教程:https://youtu.be/iKRLrJXNN4M?list=PLwAKR305CRO9S6KVHMJYqZpjPzGPWuQ7Q)
附件是我获取的错误消息的屏幕截图以及整个_nav.blade.php的pastebin。这种观点是偏袒的。在我开始工作之前,我也只是运行了作曲家更新,并注意到laravel框架刚刚从5.4.32变为5.4.33。不知道这是否会产生巨大的影响。
我可以根据要求提供此项目的github repo链接。
答案 0 :(得分:1)
因为您正在使用管理员防护,所以您需要从中检索用户。在第38行试试这个:
{{ Auth::guard('admin')->user()->name }}
或者您可以检查管理员
{{ Auth::guard('admin')->check() ? Auth::guard('admin')->user()->name : Auth::user()->name }}