Laravel 8 не обновляет сеансы, а создает новый при каждом запросе.Php

Кемеровские программисты php общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Laravel 8 не обновляет сеансы, а создает новый при каждом запросе.

Сообщение Anonymous »

Этот вопрос задавался пару раз, но, похоже, никто не смог решить его по-настоящему, т. е. «он работает удаленно», «проблема решена путем замены «файла» на «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}"

Код: Выделить всё

app/config/app.php

Код: Выделить всё

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

Код: Выделить всё

app/config/session.php

Код: Выделить всё

    // 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',

Код: Выделить всё

routes/web.php

Код: Выделить всё

    use Illuminate\Support\Facades\Route;
use App\Http\Controllers\HomeController;

// Web Routes
Route::get('/', [HomeController::class, 'test']);

Код: Выделить всё

app/Http/Controllers/HomeController.php

Код: Выделить всё

    namespace App\Http\Controllers;

use Illuminate\Http\Request;

class HomeController extends Controller {

public function test() {
return view('empty');
}

}
ВИДЫ и макеты

Код: Выделить всё

resources/views/layouts/boilerplate.blade.php

Код: Выделить всё

    










Document Title



@yield('content')



Код: Выделить всё

resources/views/empty.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
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Php»