laravel - Laravel 7 会话存储未按要求设置
问题描述
我正在尝试使用第三方身份验证 API 进行自定义身份验证,这意味着我在另一个项目(流明项目)中有一个登录端点。我找到了一个关于如何做到这一点的教程,但Laravel 5.2
在这里使用。
我在用着:
- 拉拉维尔 7
- PHPRedis/Redis
错误:
RuntimeException:未按请求设置会话存储。
教程有点简单。步骤如下:
- 安装 PhpRedis 和 Guzzle。
- 创建自定义身份验证控制器,其中包括Cache
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
中间件不起作用?
解决方案
弗洛尔,
我面临着完全相同的问题。通过在 AuthenticationRequest.php 中进行以下更改使其工作
类 AuthenticationRequest 扩展请求
至
类 AuthenticationRequest 扩展 FormRequest
您还需要以下导入
使用 Illuminate\Foundation\Http\FormRequest;
推荐阅读
- ssl-certificate - java api从同一个pem文件中读取证书和CRL
- maven - 为什么即使我已经在 pom.xml 中包含了依赖项,我也会收到 NoClassDefFoundError?
- angular - AWS Cognito - 直接联合身份提供商登录页面(没有 cognito 登录页面)
- c# - 在图表中绘制多个线系列的按钮
- php - 法语字符串未正确存储在 mysql 数据库中
- java - 分析什么堆消耗了 JUnit JavaFx
- android - 如何在 Android Studio 中创建带有句柄的隐藏可拖动窗格
- python - 在python中将文本文件转换为字典
- python-3.x - 将多个输出放入一个列表
- angular - 如何检测离子5中不同页面上的离子菜单关闭事件