Anonymous
Laravel 8 не обновляет сеансы, а создает новый при каждом запросе.
Сообщение
Anonymous » 19 окт 2024, 07:15
Этот вопрос задавался пару раз, но, похоже, никто не смог решить его по-настоящему, т. е. «он работает удаленно», «проблема решена путем замены «файла» на «cookie»» и т. д. и т. п. . но через 2 дня (я все еще новичок в Laravel) попыток и ошибок все еще не могу это исправить...
A - настройка:
с нуля установил Laravel 8.36.2 с помощью новых проектов laravel --jet на Mac под управлением OS X 10.15.7 установленная панель отладки через композитор требует barryvdh/laravel-debugbar --dev
работает на локальной установке Brew httpd установка Apache/ 2.4.46
MySQL версии 8.0.23 для osx10.15 на x86_64 (также Homebrew)
доступ к приложению через designs.test (домен указывающий на 127.0.0.1 в /etc/hosts)
B — конфигурация Laravel:
Код: Выделить всё
APP_NAME=Designs
APP_ENV=local
APP_KEY=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
APP_DEBUG=true
APP_URL=http://www.designs.test
APP_STATIC_URL=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
LOG_CHANNEL=stack
LOG_LEVEL=debug
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
DB_USERNAME=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
DB_PASSWORD=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
BROADCAST_DRIVER=log
CACHE_DRIVER=file
QUEUE_CONNECTION=sync
SESSION_DRIVER=database
SESSION_LIFETIME=120
MEMCACHED_HOST=127.0.0.1
REDIS_HOST=127.0.0.1
REDIS_PASSWORD=null
REDIS_PORT=6379
MAIL_MAILER=smtp
MAIL_HOST=mailhog
MAIL_PORT=1025
MAIL_USERNAME=null
MAIL_PASSWORD=null
MAIL_ENCRYPTION=null
MAIL_FROM_ADDRESS=null
MAIL_FROM_NAME="${APP_NAME}"
AWS_ACCESS_KEY_ID=
AWS_SECRET_ACCESS_KEY=
AWS_DEFAULT_REGION=us-east-1
AWS_BUCKET=
PUSHER_APP_ID=
PUSHER_APP_KEY=
PUSHER_APP_SECRET=
PUSHER_APP_CLUSTER=mt1
MIX_PUSHER_APP_KEY="${PUSHER_APP_KEY}"
MIX_PUSHER_APP_CLUSTER="${PUSHER_APP_CLUSTER}"
Код: Выделить всё
// Application Name
'name' => env('APP_NAME', 'Designs'),
// Application Environment
'env' => env('APP_ENV', 'development'),
// Application Debug Mode
'debug' => (bool) env('APP_DEBUG', true),
// Application URL
'url' => env('APP_URL', 'http://www.designs.test'),
'asset_url' => env('ASSET_URL', null),
// Application Timezone
'timezone' => 'UTC',
//Application Locale Configuration
'locale' => 'en',
// Application Fallback Locale
'fallback_locale' => 'en',
// Faker Locale
'faker_locale' => 'en_US',
// Encryption Key
'key' => env('APP_KEY'),
'cipher' => 'AES-256-CBC',
// Autoloaded Service Providers
'providers' => [
Illuminate\Auth\AuthServiceProvider::class,
Illuminate\Broadcasting\BroadcastServiceProvider::class,
Illuminate\Bus\BusServiceProvider::class,
Illuminate\Cache\CacheServiceProvider::class,
Illuminate\Foundation\Providers\ConsoleSupportServiceProvider::class,
Illuminate\Cookie\CookieServiceProvider::class,
Illuminate\Database\DatabaseServiceProvider::class,
Illuminate\Encryption\EncryptionServiceProvider::class,
Illuminate\Filesystem\FilesystemServiceProvider::class,
Illuminate\Foundation\Providers\FoundationServiceProvider::class,
Illuminate\Hashing\HashServiceProvider::class,
Illuminate\Mail\MailServiceProvider::class,
Illuminate\Notifications\NotificationServiceProvider::class,
Illuminate\Pagination\PaginationServiceProvider::class,
Illuminate\Pipeline\PipelineServiceProvider::class,
Illuminate\Queue\QueueServiceProvider::class,
Illuminate\Redis\RedisServiceProvider::class,
Illuminate\Auth\Passwords\PasswordResetServiceProvider::class,
Illuminate\Session\SessionServiceProvider::class,
Illuminate\Translation\TranslationServiceProvider::class,
Illuminate\Validation\ValidationServiceProvider::class,
Illuminate\View\ViewServiceProvider::class,
App\Providers\AppServiceProvider::class,
App\Providers\AuthServiceProvider::class,
// App\Providers\BroadcastServiceProvider::class,
App\Providers\EventServiceProvider::class,
App\Providers\RouteServiceProvider::class,
App\Providers\FortifyServiceProvider::class,
App\Providers\JetstreamServiceProvider::class,
],
// Class Aliases
'aliases' => [
'App' => Illuminate\Support\Facades\App::class,
'Arr' => Illuminate\Support\Arr::class,
'Artisan' => Illuminate\Support\Facades\Artisan::class,
'Auth' => Illuminate\Support\Facades\Auth::class,
'Blade' => Illuminate\Support\Facades\Blade::class,
'Broadcast' => Illuminate\Support\Facades\Broadcast::class,
'Bus' => Illuminate\Support\Facades\Bus::class,
'Cache' => Illuminate\Support\Facades\Cache::class,
'Config' => Illuminate\Support\Facades\Config::class,
'Cookie' => Illuminate\Support\Facades\Cookie::class,
'Crypt' => Illuminate\Support\Facades\Crypt::class,
'Date' => Illuminate\Support\Facades\Date::class,
'DB' => Illuminate\Support\Facades\DB::class,
'Eloquent' => Illuminate\Database\Eloquent\Model::class,
'Event' => Illuminate\Support\Facades\Event::class,
'File' => Illuminate\Support\Facades\File::class,
'Gate' => Illuminate\Support\Facades\Gate::class,
'Hash' => Illuminate\Support\Facades\Hash::class,
'Http' => Illuminate\Support\Facades\Http::class,
'Lang' => Illuminate\Support\Facades\Lang::class,
'Log' => Illuminate\Support\Facades\Log::class,
'Mail' => Illuminate\Support\Facades\Mail::class,
'Notification' => Illuminate\Support\Facades\Notification::class,
'Password' => Illuminate\Support\Facades\Password::class,
'Queue' => Illuminate\Support\Facades\Queue::class,
'Redirect' => Illuminate\Support\Facades\Redirect::class,
// 'Redis' => Illuminate\Support\Facades\Redis::class,
'Request' => Illuminate\Support\Facades\Request::class,
'Response' => Illuminate\Support\Facades\Response::class,
'Route' => Illuminate\Support\Facades\Route::class,
'Schema' => Illuminate\Support\Facades\Schema::class,
'Session' => Illuminate\Support\Facades\Session::class,
'Storage' => Illuminate\Support\Facades\Storage::class,
'Str' => Illuminate\Support\Str::class,
'URL' => Illuminate\Support\Facades\URL::class,
'Validator' => Illuminate\Support\Facades\Validator::class,
'View' => Illuminate\Support\Facades\View::class,
],
Код: Выделить всё
// Default Session Driver
'driver' => env('SESSION_DRIVER', 'database'),
// Session Lifetime
'lifetime' => env('SESSION_LIFETIME', 120),
'expire_on_close' => false,
// Session Encryption
'encrypt' => false,
//Session File Location
'files' => storage_path('framework/sessions'),
// Session Database Connection
'connection' => env('SESSION_CONNECTION', null),
// Session Database Table
'table' => 'sessions',
// Session Cache Store
'store' => env('SESSION_STORE', null),
// Session Sweeping Lottery
'lottery' => [2, 100],
// Session Cookie Name
'cookie' => env(
'SESSION_COOKIE',
Str::slug(env('APP_NAME', 'laravel'), '_').'_session'
),
// Session Cookie Path
'path' => '/',
// Session Cookie Domain
'domain' => env('SESSION_DOMAIN', 'localhost.com'),
// HTTPS Only Cookies
'secure' => env('SESSION_SECURE_COOKIE'),
// HTTP Access Only
'http_only' => true,
// Same-Site Cookies
'same_site' => 'lax',
Код: Выделить всё
use Illuminate\Support\Facades\Route;
use App\Http\Controllers\HomeController;
// Web Routes
Route::get('/', [HomeController::class, 'test']);
Код: Выделить всё
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class HomeController extends Controller {
public function test() {
return view('empty');
}
}
ВИДЫ и макеты
Код: Выделить всё
resources/views/layouts/boilerplate.blade.php
Код: Выделить всё
@extends('layouts.boilerplate')
@section('content')
This is my body content.
@endsection
ПРОБЛЕМА
каждый раз, когда вы получаете доступ к маршруту / (т. е. перезагружаете страницу через секунду или две), Laravel создаст новый сеанс в БД:
Проблема становится очень серьезной, если вы собираетесь запросить некоторые данные через вызов AJAX к тому же API домена и предоставление токена для сравнения его на серверной стороне. Laravel сгенерирует новый сеанс, а также новый токен и вернет несоответствие предоставленного с «X-CSRF-TOKEN»: $(' Meta[name="csrf-token"]').attr('content')
ВОПРОС
ЧЕГО, ЧЕРТ, Я ПРОПАВАЛ?!? Любая помощь будет очень...
ОЧЕНЬ оценена, и я более чем готов написать инструкции для всех остальных, кто сталкивается с той же проблемой, а их несколько...
Подробнее здесь:
https://stackoverflow.com/questions/674 ... ch-request
1729311338
Anonymous
Этот вопрос задавался пару раз, но, похоже, никто не смог решить его по-настоящему, т. е. «он работает удаленно», «проблема решена путем замены «файла» на «cookie»» и т. д. и т. п. . но через 2 дня (я все еще новичок в Laravel) попыток и ошибок все еще не могу это исправить... [b]A - настройка:[/b] [list] [*]с нуля установил Laravel 8.36.2 с помощью новых проектов laravel --jet на Mac под управлением OS X 10.15.7[*]установленная панель отладки через композитор требует barryvdh/laravel-debugbar --dev [*]работает на локальной установке Brew httpd установка Apache/ 2.4.46 [*]MySQL версии 8.0.23 для osx10.15 на x86_64 (также Homebrew) [*]доступ к приложению через designs.test (домен указывающий на 127.0.0.1 в /etc/hosts) [/list] [b]B — конфигурация Laravel:[/b] [code].env[/code] [code] APP_NAME=Designs APP_ENV=local APP_KEY=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx APP_DEBUG=true APP_URL=http://www.designs.test APP_STATIC_URL=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx LOG_CHANNEL=stack LOG_LEVEL=debug DB_CONNECTION=mysql DB_HOST=127.0.0.1 DB_PORT=3306 DB_DATABASE=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx DB_USERNAME=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx DB_PASSWORD=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx BROADCAST_DRIVER=log CACHE_DRIVER=file QUEUE_CONNECTION=sync SESSION_DRIVER=database SESSION_LIFETIME=120 MEMCACHED_HOST=127.0.0.1 REDIS_HOST=127.0.0.1 REDIS_PASSWORD=null REDIS_PORT=6379 MAIL_MAILER=smtp MAIL_HOST=mailhog MAIL_PORT=1025 MAIL_USERNAME=null MAIL_PASSWORD=null MAIL_ENCRYPTION=null MAIL_FROM_ADDRESS=null MAIL_FROM_NAME="${APP_NAME}" AWS_ACCESS_KEY_ID= AWS_SECRET_ACCESS_KEY= AWS_DEFAULT_REGION=us-east-1 AWS_BUCKET= PUSHER_APP_ID= PUSHER_APP_KEY= PUSHER_APP_SECRET= PUSHER_APP_CLUSTER=mt1 MIX_PUSHER_APP_KEY="${PUSHER_APP_KEY}" MIX_PUSHER_APP_CLUSTER="${PUSHER_APP_CLUSTER}" [/code] [code]app/config/app.php[/code] [code] // Application Name 'name' => env('APP_NAME', 'Designs'), // Application Environment 'env' => env('APP_ENV', 'development'), // Application Debug Mode 'debug' => (bool) env('APP_DEBUG', true), // Application URL 'url' => env('APP_URL', 'http://www.designs.test'), 'asset_url' => env('ASSET_URL', null), // Application Timezone 'timezone' => 'UTC', //Application Locale Configuration 'locale' => 'en', // Application Fallback Locale 'fallback_locale' => 'en', // Faker Locale 'faker_locale' => 'en_US', // Encryption Key 'key' => env('APP_KEY'), 'cipher' => 'AES-256-CBC', // Autoloaded Service Providers 'providers' => [ Illuminate\Auth\AuthServiceProvider::class, Illuminate\Broadcasting\BroadcastServiceProvider::class, Illuminate\Bus\BusServiceProvider::class, Illuminate\Cache\CacheServiceProvider::class, Illuminate\Foundation\Providers\ConsoleSupportServiceProvider::class, Illuminate\Cookie\CookieServiceProvider::class, Illuminate\Database\DatabaseServiceProvider::class, Illuminate\Encryption\EncryptionServiceProvider::class, Illuminate\Filesystem\FilesystemServiceProvider::class, Illuminate\Foundation\Providers\FoundationServiceProvider::class, Illuminate\Hashing\HashServiceProvider::class, Illuminate\Mail\MailServiceProvider::class, Illuminate\Notifications\NotificationServiceProvider::class, Illuminate\Pagination\PaginationServiceProvider::class, Illuminate\Pipeline\PipelineServiceProvider::class, Illuminate\Queue\QueueServiceProvider::class, Illuminate\Redis\RedisServiceProvider::class, Illuminate\Auth\Passwords\PasswordResetServiceProvider::class, Illuminate\Session\SessionServiceProvider::class, Illuminate\Translation\TranslationServiceProvider::class, Illuminate\Validation\ValidationServiceProvider::class, Illuminate\View\ViewServiceProvider::class, App\Providers\AppServiceProvider::class, App\Providers\AuthServiceProvider::class, // App\Providers\BroadcastServiceProvider::class, App\Providers\EventServiceProvider::class, App\Providers\RouteServiceProvider::class, App\Providers\FortifyServiceProvider::class, App\Providers\JetstreamServiceProvider::class, ], // Class Aliases 'aliases' => [ 'App' => Illuminate\Support\Facades\App::class, 'Arr' => Illuminate\Support\Arr::class, 'Artisan' => Illuminate\Support\Facades\Artisan::class, 'Auth' => Illuminate\Support\Facades\Auth::class, 'Blade' => Illuminate\Support\Facades\Blade::class, 'Broadcast' => Illuminate\Support\Facades\Broadcast::class, 'Bus' => Illuminate\Support\Facades\Bus::class, 'Cache' => Illuminate\Support\Facades\Cache::class, 'Config' => Illuminate\Support\Facades\Config::class, 'Cookie' => Illuminate\Support\Facades\Cookie::class, 'Crypt' => Illuminate\Support\Facades\Crypt::class, 'Date' => Illuminate\Support\Facades\Date::class, 'DB' => Illuminate\Support\Facades\DB::class, 'Eloquent' => Illuminate\Database\Eloquent\Model::class, 'Event' => Illuminate\Support\Facades\Event::class, 'File' => Illuminate\Support\Facades\File::class, 'Gate' => Illuminate\Support\Facades\Gate::class, 'Hash' => Illuminate\Support\Facades\Hash::class, 'Http' => Illuminate\Support\Facades\Http::class, 'Lang' => Illuminate\Support\Facades\Lang::class, 'Log' => Illuminate\Support\Facades\Log::class, 'Mail' => Illuminate\Support\Facades\Mail::class, 'Notification' => Illuminate\Support\Facades\Notification::class, 'Password' => Illuminate\Support\Facades\Password::class, 'Queue' => Illuminate\Support\Facades\Queue::class, 'Redirect' => Illuminate\Support\Facades\Redirect::class, // 'Redis' => Illuminate\Support\Facades\Redis::class, 'Request' => Illuminate\Support\Facades\Request::class, 'Response' => Illuminate\Support\Facades\Response::class, 'Route' => Illuminate\Support\Facades\Route::class, 'Schema' => Illuminate\Support\Facades\Schema::class, 'Session' => Illuminate\Support\Facades\Session::class, 'Storage' => Illuminate\Support\Facades\Storage::class, 'Str' => Illuminate\Support\Str::class, 'URL' => Illuminate\Support\Facades\URL::class, 'Validator' => Illuminate\Support\Facades\Validator::class, 'View' => Illuminate\Support\Facades\View::class, ], [/code] [code]app/config/session.php[/code] [code] // Default Session Driver 'driver' => env('SESSION_DRIVER', 'database'), // Session Lifetime 'lifetime' => env('SESSION_LIFETIME', 120), 'expire_on_close' => false, // Session Encryption 'encrypt' => false, //Session File Location 'files' => storage_path('framework/sessions'), // Session Database Connection 'connection' => env('SESSION_CONNECTION', null), // Session Database Table 'table' => 'sessions', // Session Cache Store 'store' => env('SESSION_STORE', null), // Session Sweeping Lottery 'lottery' => [2, 100], // Session Cookie Name 'cookie' => env( 'SESSION_COOKIE', Str::slug(env('APP_NAME', 'laravel'), '_').'_session' ), // Session Cookie Path 'path' => '/', // Session Cookie Domain 'domain' => env('SESSION_DOMAIN', 'localhost.com'), // HTTPS Only Cookies 'secure' => env('SESSION_SECURE_COOKIE'), // HTTP Access Only 'http_only' => true, // Same-Site Cookies 'same_site' => 'lax', [/code] [code]routes/web.php[/code] [code] use Illuminate\Support\Facades\Route; use App\Http\Controllers\HomeController; // Web Routes Route::get('/', [HomeController::class, 'test']); [/code] [code]app/Http/Controllers/HomeController.php[/code] [code] namespace App\Http\Controllers; use Illuminate\Http\Request; class HomeController extends Controller { public function test() { return view('empty'); } } [/code] [b]ВИДЫ и макеты[/b] [code]resources/views/layouts/boilerplate.blade.php[/code] [code] Document Title @yield('content') [/code] [code]resources/views/empty.blade.php[/code] [code] @extends('layouts.boilerplate') @section('content') This is my body content. @endsection [/code] [b]ПРОБЛЕМА[/b] каждый раз, когда вы получаете доступ к маршруту / (т. е. перезагружаете страницу через секунду или две), Laravel создаст новый сеанс в БД: [img]https://i.sstatic.net/LfRwu.png[/img] [img]https://i.sstatic.net/03x2w.png[/img] Проблема становится очень серьезной, если вы собираетесь запросить некоторые данные через вызов AJAX к тому же API домена и предоставление токена для сравнения его на серверной стороне. Laravel сгенерирует новый сеанс, а также новый токен и вернет несоответствие предоставленного с «X-CSRF-TOKEN»: $(' Meta[name="csrf-token"]').attr('content') [b]ВОПРОС[/b] ЧЕГО, ЧЕРТ, Я ПРОПАВАЛ?!? Любая помощь будет очень... [b]ОЧЕНЬ[/b] оценена, и я более чем готов написать инструкции для всех остальных, кто сталкивается с той же проблемой, а их несколько... Подробнее здесь: [url]https://stackoverflow.com/questions/67490717/laravel-8-doesnt-update-a-sessions-but-creates-a-new-one-on-each-request[/url]