techsemicolon / laravel-dynamic-user-connection
一个laravel包,为每个用户动态设置独立的数据库连接。
2.0.0
2019-02-04 11:18 UTC
Requires
- php: >=5.4.0
This package is auto-updated.
Last update: 2024-09-05 00:15:12 UTC
README
如果您需要为每个用户设置独立的数据库,那么您就找到了正确的位置。这是一个laravel包,可以帮助您在几秒钟内设置动态的用户数据库连接。
安装
composer require techsemicolon/laravel-dynamic-user-connection
然后在 config/app.php
的 providers
数组中添加 DynamicConnectionServiceProvider
条目
Techsemicolon\DynamicConnection\DynamicConnectionServiceProvider::class,
工作原理
您应该有一个基本的mysql数据库集合,其中包含 users
表。基本的登录验证将像往常一样工作。
一旦用户登录,该包就会介入,并根据 App\User.php
模型中的相关设置切换数据库。
使用方法
该包期望您将这些详细信息保存到 users
表中。包需要的是存储动态用户连接信息的列名。
您可以在 App\User.php
模型中添加以下公共属性来设置数据库
<?php namespace App; use Illuminate\Foundation\Auth\User as Authenticatable; class User extends Authenticatable { public $dynamic_connection_database = 'database_name'; /** * The attributes that should be hidden for arrays. * * @var array */ protected $hidden = [ 'password', 'remember_token', ]; }
上述设置将 users
表中 database_name
列中存储的字符串值作为该用户连接的数据库名称。
您还可以选择指定用户名和密码列
<?php namespace App; use Illuminate\Foundation\Auth\User as Authenticatable; class User extends Authenticatable { public $dynamic_connection_database = 'database_name'; // Optional public $dynamic_connection_username = 'database_username'; public $dynamic_connection_password = 'database_password'; /** * The attributes that should be hidden for arrays. * * @var array */ protected $hidden = [ 'password', 'remember_token', ]; }
注意:您需要使用laravel的 decrypt()
助手对 database_password
列的值进行解密(),在存储到 users
表中。这是因为在数据库中直接存储密码字符串是不安全的。
如果密码不可解密,则包会抛出 DynamicConnectionInvalidPasswordException
。
许可协议
此包是开源软件,根据MIT许可证授权