Флэш-данные не записываются в сеанс

Я использую Laravel 7.12.0, и данные моего сеанса флэш-памяти, похоже, вообще не работают с использованием

request()->session()->flash('status', 'Task was successful!');

or

return redirect()->route('home')->with('status', "Task was successful");

Я использую Debugbar, а также добавляю страницу для проверки данных сеанса.

Я также знаю, что используется веб-промежуточное программное обеспечение.

session()->put() все еще работает, поэтому я знаю, что ввод данных в сеанс не полностью нарушен, но флэш-данные, похоже, вообще не работают. Это новая установка, поэтому я изо всех сил пытаюсь понять, что может быть не так?

Web.php

Auth::routes();


Route::get('/', 'HomeController@index')->name('home');

Route::group(['middleware' => ['auth']], function () {
    Route::resource('polls', 'PollController');
    Route::post('polls/vote', 'PollController@vote')->name('polls.vote');
});

Route::resource('api/polls', 'API\PollController');

Часть RouteServiceProvider.php

    /**
     * Define the "web" routes for the application.
     *
     * These routes all receive session state, CSRF protection, etc.
     *
     * @return void
     */
    protected function mapWebRoutes()
    {
        Route::middleware('web')
            ->namespace($this->namespace)
            ->group(base_path('routes/web.php'));
    }

Группа Web Middleware в kernel.php

    /**
     * The application's route middleware groups.
     *
     * @var array
     */
    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,
        ],

        'api' => [
            'throttle:60,1',
            \Illuminate\Routing\Middleware\SubstituteBindings::class,
        ],
    ];

HomeController.php

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;

class HomeController extends Controller
{

    public function index()
    {
        dd(request()->session()->all());
    }
}

Что находится в сеансе с моего HomeController@index после перенаправления.

  "_token" => "pbZJgfC6XNG2eTqlcGADm68NqhjOHI16rWe4U1bt"
  "_previous" => array:1 [▼
    "url" => "http://127.0.0.1:8000"
  ]
  "_flash" => array:2 [▼
    "old" => []
    "new" => []
  ]
  "url" => []
  "login_web_59ba36addc2b2f9401580f014c7f58ea4e30989d" => 1
]

Спасибо


person Gazz    schedule 25.05.2020    source источник
comment
почему вы говорите, что это не работает?   -  person Giacomo M    schedule 25.05.2020
comment
В вашем маршруте home что вы делаете с сеансом? Вы показываете его где-нибудь, выполняете другой редирект или что происходит?   -  person Qirel    schedule 25.05.2020
comment
@Qirel В HomeController@index все, что у меня есть, это dd(request()->session()->all()); просто для того, чтобы посмотреть, какие данные сеанса у него есть. Я отредактирую свой пост, чтобы показать, что я получаю в ответ.   -  person Gazz    schedule 25.05.2020
comment
withErrors() работает?   -  person Christophe Hubert    schedule 25.05.2020


Ответы (1)


Похоже, это связано со средой хостинга. Мне удалось воспроизвести проблему на моем локальном компьютере при использовании http://127.0.0.1:8000. После переключения на http://localhost:8000 сеансы начали сохраняться, как и ожидалось, как с ->flash, так и с ->with .

person John Shipp    schedule 25.05.2020
comment
Спасибо, но все еще не решил проблему. Я все еще получаю тот же результат. - person Gazz; 25.05.2020
comment
Могу я случайно увидеть ваш контроллер? - person John Shipp; 25.05.2020
comment
Спасибо... в каком контроллере вы вызываете перенаправление выше? - person John Shipp; 25.05.2020
comment
Контроллер с именем PollController. На данный момент метод контроллера содержит только перенаправление и ничего больше. Он вызывается из PollController@store. В моих веб-маршрутах он находится в ресурсе, например. Route::resource('polls', 'PollController'); - person Gazz; 25.05.2020
comment
@Грэм ... обновил мой ответ. Давайте посмотрим, работает ли это для вас! - person John Shipp; 25.05.2020
comment
@Graeme: переключение с 127.0.0.1 -> localhost помогло. Любопытно, если это работает и для вас! (см. мой новый ответ выше). (Кроме того, отбросьте dd() и вместо этого используйте print_r() из-за жизненного цикла Laravel) - person John Shipp; 25.05.2020
comment
Еще раз спасибо, но это все еще не сработало. Я могу попробовать просто создать новый проект laravel и выполнить работу, которую я проделал до сих пор, и посмотреть, сохраняется ли проблема. Действительно странный. - person Gazz; 26.05.2020