【问题标题】:Session store not set on request in Laravel 5.3 [closed]在 Laravel 5.3 中未根据请求设置会话存储 [关闭]
【发布时间】:2017-12-11 06:28:13
【问题描述】:

我的网站出现这样的错误:

我也尝试了一些解决方案,例如在中间件网络中包装 Route,但它不起作用

这是我的 Kernel.php

<?php

namespace App\Http;

use App\Http\Middleware\Activated;
use Illuminate\Foundation\Http\Kernel as HttpKernel;

class Kernel extends HttpKernel
{

    protected $middleware = [
        \Illuminate\Foundation\Http\Middleware\CheckForMaintenanceMode::class,
    ];

    protected $middlewareGroups = [
        'web' => [
            \App\Http\Middleware\EncryptCookies::class,
            \Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class,
            \Illuminate\Session\Middleware\StartSession::class,
            \Illuminate\View\Middleware\ShareErrorsFromSession::class,
            \App\Http\Middleware\VerifyCsrfToken::class,
            \Illuminate\Routing\Middleware\SubstituteBindings::class,
            \anlutro\LaravelSettings\SaveMiddleware::class,
            \Barryvdh\Cors\HandleCors::class,
            Activated::class
        ],

        'api' => [
            'throttle:60,1',
            'bindings',
        ],
    ];
(The rest of file)
    }

我该如何解决:((

【问题讨论】:

标签: php laravel laravel-5.3


【解决方案1】:

如果您需要会话状态、CSRF 保护等,则需要使用 Web 中间件。

Route::group(['middleware' => ['web']], function () {
    // your routes here
});

你的 kernel.php 应该是这样的

protected $middleware = [
        \Illuminate\Foundation\Http\Middleware\CheckForMaintenanceMode::class,
        \Illuminate\Session\Middleware\StartSession::class,
    ];

    protected $middlewareGroups = [
        'web' => [
            \App\Http\Middleware\EncryptCookies::class,
            \Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class,

            \Illuminate\View\Middleware\ShareErrorsFromSession::class,
            \App\Http\Middleware\VerifyCsrfToken::class,
            \Illuminate\Routing\Middleware\SubstituteBindings::class,
            \anlutro\LaravelSettings\SaveMiddleware::class,
            \Barryvdh\Cors\HandleCors::class,
            Activated::class
        ],

【讨论】:

  • 我也试过了,但是没用
  • 同样的事情 :((,我也运行 php artisan opt 来清除缓存
  • 尝试运行 composer dump-autoload 然后检查
  • 天啊!!真的很管用:D,迷人!!!
  • 好兄弟 :) 很高兴能帮助你
【解决方案2】:

如果在 web 中间件 中添加您的 路由 因任何原因不起作用,请尝试将其添加到 $middleware内核.php

protected $middleware = [
    //...
    \Illuminate\Session\Middleware\StartSession::class,
    \Illuminate\View\Middleware\ShareErrorsFromSession::class,
];

【讨论】:

    【解决方案3】:

    您好,您需要创建一个中间件

    php artisan make:middleware AnyNameYouWant
    

    它将为您创建一个很好的样板。

    public function handle($request, Closure $next)
    {
       // Your Logic
    }
    
      return redirect('whereever you want to redirect');
    }
    

    然后将其包含在您的中间件中

       'web' => [
            \App\Http\Middleware\EncryptCookies::class,
    
          \Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class,
            \Illuminate\Session\Middleware\StartSession::class,
            \Illuminate\View\Middleware\ShareErrorsFromSession::class,
            \App\Http\Middleware\VerifyCsrfToken::class,
            \Illuminate\Routing\Middleware\SubstituteBindings::class,
            \anlutro\LaravelSettings\SaveMiddleware::class,
            \Barryvdh\Cors\HandleCors::class,
            \App\Http\Middleware\YourMiddleware::class
        ],    
    

    希望对你有帮助

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-03-13
      • 1970-01-01
      • 1970-01-01
      • 2016-03-30
      • 2023-03-22
      • 2020-08-24
      • 2017-09-30
      • 2017-06-14
      相关资源
      最近更新 更多