代码之家  ›  专栏  ›  技术社区  ›  J. Robinson

Laravel Blade If语句在与Guard进行身份验证检查时引发非对象属性错误

  •  0
  • J. Robinson  · 技术社区  · 7 年前

    让我们看看我的代码:

    @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()

    基本上,正如您可能从我的代码中可以看出的那样,我希望引导下拉列表显示是否已登录,如果未登录,则显示登录和注册按钮。

    那么如果 User Admin 管理 已登录,但随后显示两个链接。

    正如您在下面的这段代码中所看到的,这与最上面的if语句完全相同。这个很好用,但parent 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

    (DevMarketer的YouTube Multi-Auth教程: https://youtu.be/iKRLrJXNN4M?list=PLwAKR305CRO9S6KVHMJYqZpjPzGPWuQ7Q

    附件是我收到的错误消息的截图,以及整个导航的粘贴箱。刀身php。此视图是局部视图。在开始工作之前,我也只是运行了composer更新,并注意到laravel框架刚刚从5.4.32升级到5.4.33。我不知道这是否会产生巨大的变化。

    https://pastebin.com/pLDTmU4w

    http://imgur.com/a/0y6kd

    我可以提供我的github回购链接,为这个项目的要求。

    1 回复  |  直到 7 年前
        1
  •  1
  •   JRoss    7 年前

    {{ Auth::guard('admin')->user()->name }}
    

    或者你可以检查一下管理员

    {{ Auth::guard('admin')->check() ? Auth::guard('admin')->user()->name : Auth::user()->name }}