Program Resource

開発者向け各種コード、アルゴリズム、リソース情報ライブラリ もしくはねふぁの覚え書き

Laravel/vueのちょっとした事の覚え書き。Laravel 8.xで作業した際の情報。

複数アプリ間でユーザーDBとセッションを共通化

https://medium.com/@zsolt.gyure96/how-to-share-sessions-between-two-laravel-applications-4b9d061fa599

/config/database.php に適当な名前を付けて追加し、databaseのところだけ直接指定する。

        'mysql_auth' => [
            'driver' => 'mysql',
            'url' => env('DATABASE_URL'),
            'host' => env('DB_HOST', '127.0.0.1'),
            'port' => env('DB_PORT', '3306'),
            'database' => 'userdb',
            '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'),
            ]) : [],
        ],

app/models/user.php のdbを変更

protected $connection = 'mysql_auth';

app/Http/Auth/RegisterController.php unique:usersにdb名追加

    protected function validator(array $data)
    {
        return Validator::make($data, [
            'name' => ['required', 'string', 'max:255'],
            'email' => ['required', 'string', 'email', 'max:255', 'unique:mysql_auth.users'],
            'password' => ['required', 'string', 'min:8', 'confirmed'],
        ]);
    } 

セッション用にテーブル追加

php artisan session:table

migrationファイルが作成されるので編集する

   public function up()
    {
        Schema::connection('mysql_auth')->create('sessions', function (Blueprint $table) {
            $table->string('id')->primary();
            $table->foreignId('user_id')->nullable()->index();
            $table->string('ip_address', 45)->nullable();
            $table->text('user_agent')->nullable();
            $table->text('payload');
            $table->integer('last_activity')->index();
        });
    }

.env編集。SESSION_DOMAIN設定すると上手く行かなかった。

SESSION_DRIVER=database
SESSION_CONNECTION=mysql_auth

php artisan migrate する。

Print Friendly, PDF & Email