无法在 Laravel 5.4 的刀片模板中使用 Auth::user()

Qil*_*Ren 2 php authentication laravel laravel-5.4

我想让我的索引页同时具有guestauth功能。

当客人来访时,他们可以尝试登录;并且在登录后,它会显示用户的信息,如用户名。

下面是我所做的。

路由定义在routes/web.php

Route::get('/', 'CommonController@index');
Auth::routes();
Run Code Online (Sandbox Code Playgroud)

在刀片模板中index,我曾经Auth::user()验证过身份验证但失败了。

@if(Auth::user())
    <div id="user-panel">
        <a href="" class="user-panel-button">
            New Article
        </a>
        <div class="btn-group user-panel-button">
            <a type="button" class="dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
                {{ Auth::user()->name }} <span class="caret"></span>
            </a>
            <ul class="dropdown-menu">
                <li><a href="{{ Auth::logout() }}">Logout</a></li>
            </ul>
        </div>
    </div>
@else
    <a href="{{ url('login') }}" class="button">
        Login
    </a>
@endif
Run Code Online (Sandbox Code Playgroud)

每次我成功登录login后,在我刷新索引页面后,它仍然会显示按钮而不是用户名按钮。

我检查了会话信息,一旦我刷新页面,login_web_xxxxxxxxxxx会话就会消失。

此外,当我为 auth 使用 Laravel 默认路径时/home,它起作用了。无论您刷新页面多少次,都可以始终显示用户名。

我应该如何解决这个问题?非常感谢。

oma*_*ari 7

对于 Laravel 5.4,您可以使用:

@if(Auth::check())
    // The user is authenticated...
@else
    // The user is not authenticated...
@endif
Run Code Online (Sandbox Code Playgroud)

对于 Laravel 5.5 及以上版本:

@auth
    // The user is authenticated...
@endauth

@guest
    // The user is not authenticated...
@endguest
Run Code Online (Sandbox Code Playgroud)