簡體   English   中英

Laravel-5.5:未根據請求設置會話存儲

[英]Laravel-5.5: Session store not set on request

我有簡單的控制器:

代碼收件箱控制器:

<?php

namespace App\Http\Controllers;

use App\User;
use App\Message;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;

class InboxController extends Controller
{
    public function compose(Request $request)
    {
        if($request->isMethod('post'))
        {

            $rules = [
                'to'      => 'required|email',
                'from'    => 'required|email',
                'subject' => 'required|max:10',
                'message' => 'required'
            ];

            $this->validate($request, $rules);

        }

        $array = array('messages'=>$this->user_messages(), 'count' => $this->count_messages());

        return view('compose', $array);
    }
}

如果我想驗證所有路由中發送的數據給出錯誤:

Session store not set on request.

如何在 Laravel 5.5 中根據請求設置會話以驗證數據? 我必須驗證compose路線中的數據

Routes
Route::group(['prefix' => 'inbox', 'middleware' => 'auth'], function(){
    Route::get('/', ['uses' => 'InboxController@index',])->name('inbox');
    Route::match(['get', 'post'], '/message/{id?}', ['uses'=>'InboxController@message'])->name('message');
    Route::match(['get', 'post'], '/compose', ['uses'=>'InboxController@compose'])->name('compose');
});

我的中間件組代碼:

protected $middlewareGroups = [
    'web' => [
        \App\Http\Middleware\EncryptCookies::class,
        \Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class,
        \Illuminate\Session\Middleware\StartSession::class,
        \Illuminate\Session\Middleware\AuthenticateSession::class,
        \Illuminate\View\Middleware\ShareErrorsFromSession::class,
        \App\Http\Middleware\VerifyCsrfToken::class,
        \Illuminate\Routing\Middleware\SubstituteBindings::class,
    ],

你需要添加

 \Illuminate\Session\Middleware\StartSession::class

在 kernal.php 網絡組中的中間件中。

如果您需要會話狀態、CSRF 保護等,則需要使用 Web 中間件。

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

這是因為

在 Kernal.php 中(位置 -> /app/Http )

有兩個數組$middleware$routeMiddleware

不要在 $middleware 數組中創建別名(命名)。 它必須在 $routeMiddleware 數組中創建。

例如

protected $routeMiddleware = [
    'auth' => \Illuminate\Auth\Middleware\Authenticate::class,
    'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class,
    'bindings' => \Illuminate\Routing\Middleware\SubstituteBindings::class,
    'can' => \Illuminate\Auth\Middleware\Authorize::class,
    'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class,
    'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class,
    'checkLogin' => \App\Http\Middleware\CheckLogin::class,
    //here you have to add your middleware naming not in the $middleware array
];

    

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM