Я пытаюсь выполнить пользовательскую аутентификацию с помощью стороннего API аутентификации , что означает, что у меня есть конечная точка входа в другой проект (проект Lumen). и я нашел руководство о том, как это сделать, но используя Laravel 5.2
на здесь .
Я использую:
- Laravel 7
- PhpRedis / Redis
ОШИБКА:
RuntimeException: хранилище сеансов не установлено по запросу.
Учебник довольно простой. Шаги следующие:
- Установите PhpRedis и Guzzle.
- Создайте настраиваемые контроллеры аутентификации, которые включают
Throttles.php
, где работает Кэш . - Переопределить промежуточное программное обеспечение аутентификации Laravel (
Authenticate.php
).
Я выполнил все шаги и ничего не пропустил. Что я пытался исправить, но ни один из них не работает:
Я использовал промежуточное ПО web
в маршрутах входа в систему, но оно не сработает, и я не знаю, почему
Route::group(['middleware' => ['web']], function () {
Route::get('login', 'Auth\CustomAuthController@showLoginForm');
Route::post('login', 'Auth\CustomAuthController@login');
Route::get('logout', 'Auth\CustomAuthController@logout');
});
А вот здесь мой Kernel.php
по умолчанию.
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,
],
Настроить драйвер кэша
Мой .env
файл
BROADCAST_DRIVER=log
CACHE_DRIVER=redis
QUEUE_CONNECTION=sync
SESSION_DRIVER=redis
SESSION_LIFETIME=120
Мой database.php
'redis' => [
'client' => env('REDIS_CLIENT', 'predis'),
'options' => [
'cluster' => env('REDIS_CLUSTER', 'redis'),
'prefix' => env('REDIS_PREFIX', Str::slug(env('APP_NAME', 'laravel'), '_').'_database_'),
],
'default' => [
'host' => env('REDIS_HOST', 'localhost'),
'password' => env('REDIS_PASSWORD', null),
'port' => env('REDIS_PORT', 6379),
'database' => 0,
'read_write_timeout' => 60,
],
'cache' => [
'url' => env('REDIS_URL'),
'host' => env('REDIS_HOST', '127.0.0.1'),
'password' => env('REDIS_PASSWORD', null),
'port' => env('REDIS_PORT', '6379'),
'database' => env('REDIS_CACHE_DB', '1'),
],
'session' => [
'host' => env('REDIS_HOST', '127.0.0.1'),
'password' => env('REDIS_PASSWORD', null),
'port' => env('REDIS_PORT', 6379),
'database' => 1,
],
],
И мой session.php
'connection' => 'session',
Я пробовал все это, и ни один из них не работал. Не знаю, что происходит, возможно, Laravel 7 нужно что-то еще или я что-то упускаю. Кто-нибудь может знать, почему промежуточное ПО web
не работает?