<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                ## 6種解決laravel報錯 Session store not set on request - 原因 沒有通過session中間件 - 修改1:添加中間件 `\Illuminate\Session\Middleware\StartSession::class,` - 修改2: 使用中間件web ### 注:這個方案只能解決一般的直接訪問的,即請求頭必須還有token的,如果沒有token的請參考:Ajax跨域訪問未攜帶token ![](https://img.kancloud.cn/96/cf/96cf166d2a1e85a55a069606fa3baa60_711x832.png) ### 回答1: 如果您需要會話狀態,CSRF保護等,則需要使用Web中間件。 ``` Route::group(['middleware' => ['web']], function () { // your routes here }); ``` ### 回答2: 如果添加你的routes內部web middleware因任何原因不起作用,那么嘗試將其添加$middleware到Kernel.php ``` protected $middleware = [ //... \Illuminate\Session\Middleware\StartSession::class, \Illuminate\View\Middleware\ShareErrorsFromSession::class, ]; ``` ? ### 回答三: 如果Cas Bloem的答案不適用(即您確實web在適用的路由上獲得了中間件),您可能需要檢查HTTP內核中的中間件的順序。 默認順序Kernel.php是: ``` $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, ], ]; ``` 請注意,VerifyCsrfToken之后StartSession。如果你有不同的順序,它們之間的依賴關系也會導致Session store not set on request.異常。 ? ### 回答4: 在我的情況下(使用Laravel 5.3),僅添加以下2個中間件允許我訪問API路由中的會話數據: ``` \App\Http\Middleware\EncryptCookies::class \Illuminate\Session\Middleware\StartSession::class 整個聲明($middlewareGroups在Kernel.php中): 'api' => [ \App\Http\Middleware\EncryptCookies::class, \Illuminate\Session\Middleware\StartSession::class, 'throttle:60,1', 'bindings', ], ``` ? ### 回答五:全局會話助手:?session() 寫作: ``` session(['key'=>'value']); ``` 推動: ``` session()->push('key', $notification); ``` 檢索: ``` session('key'); ``` ? ### 回答6: 問題可能是您嘗試訪問控制器__constructor()功能內的會話?。 從Laravel 5.3+開始,這是不可能的,因為它無論如何都無法工作,如升級指南中所述。 在以前版本的Laravel中,您可以在控制器的構造函數中訪問會話變量或經過身份驗證的用戶。這從未打算成為框架的明確特征。在Laravel 5.3中,您無法訪問控制器構造函數中的會話或經過身份驗證的用戶,因為中間件尚未運行。 ? 解決方法 如果您仍想使用它,您可以動態創建中間件并在構造函數中運行它,如升級指南中所述: 作為替代方案,您可以直接在控制器的構造函數中定義基于Closure的中間件。在使用此功能之前,請確保您的應用程序正在運行Laravel 5.3.4或更高版本: ``` middleware(function ($request, $next) { $this->projects = Auth::user()->projects; return $next($request); }); } } ```
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看