php - 设置 session 域时 Laravel 数据库 session 不工作

标签 php laravel session-cookies

我在存储 session cookie 时遇到数据库驱动程序问题:

数据库连接当前正在工作,但浏览器中未设置 cookie,但 session 数据位于我的数据库中。

我已经跑了:

php artisan session:table

在我的 .env 文件中设置数据库 session :

SESSION_DRIVER=database

下面是config/session.php文件:

[
    'driver' => env('SESSION_DRIVER', 'file'),
    'connection' => 'mysql',
    'table' => 'sessions',
]

编辑1:

web.php中的路由:

Route::group(['domain' => GetDomainInfo::GetDomainName(), 'middleware' => 'web'], function () {
    Route::get('/', "HomeController@index");
});

问题解决者:

例如,我通过添加到我的 hosts 文件中创建了一个本地主机域:webcv:

127.0.0.1 webcv.local
127.0.0.1 admin.webcv.local

config/session.php 中将 session 域设置为:.webcv.local,如下所示:

'domain' => env('SESSION_DOMAIN', ".webcv.local"),

或者只需添加 .env 文件:

SESSION_DOMAIN=.webcv.local

现在我可以使用相同的 cookie 访问 webcv.localadmin.webcv.local

最佳答案

当您使用 session 的数据库驱动程序时,您必须创建 session 表。

我假设您已经通过执行 php artisan make:auth 搭建了 native 身份验证系统并迁移了迁移。

因此,首先生成迁移,然后迁移: php artisan session :表

执行迁移: php artisan 迁移

显然,如果您正在检查的路由没有使用 web 中间件,这将不起作用。 如果您没有在 /routes/web.php 中注册路由,则必须手动为其指定 web 中间件。要么在 Controller 的构造函数中,要么直接在路由本身中。

修复后编辑以供将来引用:

此外,请检查 config/session.php 中的域是否与您在开发或生产中使用的域相同,具体取决于您的工作位置。

关于php - 设置 session 域时 Laravel 数据库 session 不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45129617/

相关文章:

php 获取一周前的日期

php - 如何使用 Laravel Input::replace() 测试 POST 请求

node.js - 如何修复 isAuthenticated=false 且登录成功后无 req.user 数据

php - 在 PHP 中设置 session cookie 时遇到问题

javascript - 使用JS计算不显示

php - 将复选框数据从 php 存储到数据库

javascript - 在运行时检索评论?

angular - 如何修复登录请求的 401(未经授权)

php - Laravel 邮件的可选参数

javascript - 在 Javascript 中访问 PHP session 名称