简体   繁体   English

将会话存储到公共数据库中

[英]store sessions into a common database

Basically what I am trying to do is sharing session between laravel applications using a common database.基本上我想要做的是使用公共数据库在 Laravel 应用程序之间共享会话。 what I've tried so far is到目前为止我尝试过的是

.env .env

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=login_test
DB_USERNAME=root
DB_PASSWORD=

DB_DATABASE_ADMIN=login_admin
DB_USERNAME_ADMIN=root
DB_PASSWORD_ADMIN=
SESSION_DRIVER=database
SESSION_CONNECTION=login_admin //getting error here: Database [login_admin] not configured.

session.php会话文件

'driver' => env('SESSION_DRIVER', 'file'),
'files' => storage_path('framework/sessions'),
'connection' => env('SESSION_CONNECTION', null),
'table' => 'sessions',

database.php数据库.php

'mysql' => [
    'driver' => 'mysql',
    'url' => env('DATABASE_URL'),
    'host' => env('DB_HOST', '127.0.0.1'),
    'port' => env('DB_PORT', '3306'),
    'database' => env('DB_DATABASE', 'forge'),
    'username' => env('DB_USERNAME', 'forge'),
    'password' => env('DB_PASSWORD', ''),
    'unix_socket' => env('DB_SOCKET', ''),
    'charset' => 'utf8mb4',
    'collation' => 'utf8mb4_unicode_ci',
    'prefix' => '',
    'prefix_indexes' => true,
    'strict' => true,
    'engine' => null,
    'options' => extension_loaded('pdo_mysql') ? array_filter([
        PDO::MYSQL_ATTR_SSL_CA => env('MYSQL_ATTR_SSL_CA'),
    ]) : [],
],

'mysql2' => [
    'driver' => 'mysql',
    'url' => env('DATABASE_URL'),
    'host' => env('DB_HOST', '127.0.0.1'),
    'port' => env('DB_PORT', '3306'),
    'database' => env('DB_DATABASE_ADMIN', 'forge'),
    'username' => env('DB_USERNAME_ADMIN', 'forge'),
    'password' => env('', ''),
    'unix_socket' => env('DB_SOCKET', ''),
    'charset' => 'utf8mb4',
    'collation' => 'utf8mb4_unicode_ci',
    'prefix' => '',
    'prefix_indexes' => true,
    'strict' => true,
    'engine' => null,
    'options' => extension_loaded('pdo_mysql') ? array_filter([
        PDO::MYSQL_ATTR_SSL_CA => env('MYSQL_ATTR_SSL_CA'),
    ]) : [],
]

so here I want to set the sessions table into my common database named login_admin所以在这里我要对设置sessions表到我共同的数据库名为login_admin

I am already sharing a common users table between the projects so I've no issue on connecting multiple databases.我已经在项目之间共享了一个公共用户表,所以我在连接多个数据库方面没有问题。 I've checked previous relevant questions but did not find how to share the table into common database我检查了以前的相关问题,但没有找到如何将表共享到公共数据库中

/* |-------------------------------------------------------------------------- | Session Database Connection |-------------------------------------------------------------------------- | | When using the "database" or "redis" session drivers, you may specify a | connection that should be used to manage these sessions. This should | correspond to a connection in your database configuration options. | */

According to your code SESSION_CONNECTION field should be the connection name, which is mysql2 in your case and not login_admin根据您的代码SESSION_CONNECTION字段应该是连接名称,在您的情况下是mysql2而不是login_admin

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM