Laravel-5.5:未按要求设置会话存储

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/48124640/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-09-14 17:12:30  来源:igfitidea点击:

Laravel-5.5: Session store not set on request

phplaravellaravel-5.5

提问by Andreas Hunter

I have simple controller:

我有简单的控制器:

Code InboxController:

代码收件箱控制器:

<?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);
    }
}

And if I want validate sended data in all routes give error:

如果我想验证所有路由中发送的数据给出错误:

Session store not set on request.

How I can set session on request in Laravel 5.5 for validate data? I must validate data in composeroute

如何在 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');
});

My middleware group code:

我的中间件组代码:

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,
    ],

回答by Saurabh Parekh

You Need to add

你需要添加

 \Illuminate\Session\Middleware\StartSession::class

in middle ware inside kernal.php web group.

在 kernal.php 网络组中的中间件中。

回答by Sohel0415

You'll need to use the web middleware if you need session state, CSRF protection, and more.

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

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