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

lew*_*s4u 2 laravel

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

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

在此输入图像描述

更新

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

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

brn*_*nd0 8

将下面的添加到/routes/web.php

Route::fallback(function(){
    return view('errors.404');
});
Run Code Online (Sandbox Code Playgroud)

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

Nothing here {{ Auth::user()->name }}: 404!
Run Code Online (Sandbox Code Playgroud)

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

v5.5.5可用


Ray*_*eng 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>
Run Code Online (Sandbox Code Playgroud)

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

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

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

    \Illuminate\Session\Middleware\StartSession::class,
    \Illuminate\View\Middleware\ShareErrorsFromSession::class,
Run Code Online (Sandbox Code Playgroud)

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

/**
 * 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,
];
Run Code Online (Sandbox Code Playgroud)

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

{{\Auth::user()->name}}
Run Code Online (Sandbox Code Playgroud)

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