fes*_*tie 6 php session http-status-code-404 laravel
这让我疯狂了几个星期:如何在404页面上提供会话?我只是将404错误页面嵌入到我的默认模板中.它还显示了导航栏和页脚,但是如何在404上保持用户登录?
在404 Auth :: check()上总是返回false,其他特定于会话的其他内容为null或为空.
如何在(404)错误页面上启用会话?
Kev*_*uno 10
你可以做的是,在app/http/Kernel.php中添加以下代码块:
\Illuminate\Session\Middleware\StartSession::class,
\Illuminate\View\Middleware\ShareErrorsFromSession::class,
Run Code Online (Sandbox Code Playgroud)
在$ middleware变量里面.所以它看起来像:
protected $middleware = [
\Illuminate\Foundation\Http\Middleware\CheckForMaintenanceMode::class,
\Illuminate\Session\Middleware\StartSession::class,
\Illuminate\View\Middleware\ShareErrorsFromSession::class,
];
Run Code Online (Sandbox Code Playgroud)
它对我有用,我希望它也适合你.
所以我知道这是一个老问题,但如果有人发现它有用,我是如何处理这个问题的:
在我的App/Exceptions/Handler.php我将默认render方法更改为:
public function render($request, Exception $exception) {
\Route::any(request()->path(), function () use ($exception, $request) {
return parent::render($request, $exception);
})->middleware('web');
return app()->make(Kernel::class)->handle($request);
}
Run Code Online (Sandbox Code Playgroud)
这实现了 2 个要求:
web中间件都针对请求正确运行这实际上是在web出现错误时将中间件组设为默认运行的决定。Laravel 通常不会在错误页面上运行任何中间件组。如果需要,您当然可以指定其他中间件或其他路由参数,或者使用其他条件,例如,如果路径以 开头,api/则使用api中间件而不是使其更加一致。
希望这对某人有帮助。