Laravel无法查看用户是否在404错误页面上登录

时间:2017-02-23 14:27:32

标签: laravel

我创建了一个自定义404错误页面,我正在使用我的app.layout来包装它。

但它很奇怪,因为当我收到404错误页面时,即使我已登录登录和注册链接。那是为什么?

enter image description here

更新

当我登录我的页面并编写非现有路线时,我得到了带有扩展布局的404页面,但似乎Laravel无法访问Auth :: class而且它看不到用户是否已登录。

因此,我没有看到Logout链接,而是看到"登录"和"注册"链接

3 个答案:

答案 0 :(得分:5)

检查您的app.layout是否包含导航部分。

像这样的布局html:

<div class="content-wrapper">
 <!-- Content Header (Page header) -->
 @include('partials.crumble_head')
 <!-- Main content -->
 <section class="content">
  @yield('content')
 </section>
 <!-- /.content -->
</div>

如果您的内容页面扩展了此布局,则部分不会消失

嗨,答案需要根据我们讨论的内容进行更新。

Open app/Http/Kernel.php. Add below block to the $middleware

    \Illuminate\Session\Middleware\StartSession::class,
    \Illuminate\View\Middleware\ShareErrorsFromSession::class,

所以你的代码应该是这样的:

/**
 * The application's global HTTP middleware stack.
 *
 * These middleware are run during every request to your application.
 *
 * @var array
 */
protected $middleware = [
        \Illuminate\Foundation\Http\Middleware\CheckForMaintenanceMode::class,
    \Illuminate\Session\Middleware\StartSession::class,
    \Illuminate\View\Middleware\ShareErrorsFromSession::class,
];

现在,您应该可以在views / errors / 404.blade页面中访问Auth。确保在Auth之前加上'\'。对于Eg:

{{\Auth::user()->name}}

https://laracasts.com/discuss/channels/laravel/getting-authuser-on-custom-404-page

答案 1 :(得分:0)

我发现了另一种情况。

如果您已将网站切换为SSL并设置会话cookie&#34;安全&#34;标记为true,并且没有强制重定向非ssl&gt; ssl(htaccess /等等)。如果您之前使用&#34记录了非ssl站点,请记住&#34;选项,然后记住cookie&#34;安全&#34; flag仍然是false

如果您浏览非ssl网站,那么会话cookie不会因为您不在SSL上而停留,因此用户将有效地获取每次请求时创建的新会话cookie不是&#34;安全&#34;。所以你似乎会登录,除非你看到一个404,你似乎将被注销(无论出于何种原因)。

答案 2 :(得分:0)

在下面将其添加到/routes/web.php

Route::fallback(function(){
    return view('errors.404');
});

并添加一个新文件/resources/views/errors/404.blade.php

Nothing here {{ Auth::user()->name }}: 404!

当然,您可以更改此模板以扩展要使用的任何模板。

v5.5.5起可用