[英]Laravel multi database with one DB storing users
我有一個為公司構建的標准Laravel應用程序。 我現在將其制作為SAAS模型,但對最佳設置感到好奇。 我肯定知道我希望每個公司都有自己的數據庫來確保安全性,更容易地獲得特定客戶數據的能力,並且由於這些都是競爭公司,所以這可能只是一個更好的賣點。
我的問題是如何設置一個DB和子域來指向它們特定的DB和應用程序設置,但是我真的不希望有100個子域,對於iOS應用程序,我需要一個單用戶身份驗證門戶。
有沒有一種特定的方法來擁有一個容納所有laravel用戶的數據庫,並在登錄時將其分配給他們的特定數據庫? 基本上,我只需要一個門戶(身份驗證位置)。
我知道這是通用的,但不確定在哪里發布或搜索。
設定:
用戶數據庫(標准laravel設置)
User | Password Reset | Migrations | Roles
公司數據庫
accounts | routes
公司數據庫
accounts | routes
您的應用程序有一個默認數據庫。 那是用戶認證的地方。 每個公司然后將其數據庫詳細信息存儲在您的主數據庫中。 一旦有人進行身份驗證,您就可以獲取數據庫詳細信息並將其設置為默認數據庫。
public function setDefaultConnection($company)
{
//update the config
config(['database.connections.mysql' => [
'host' => $company->host,
'username' => $company->username,
'password' => $company->password
]]);
//Check the credentials by calling PDO
try {
DB::connection()->getPdo();
} catch (\Exception $e) {
return redirect()->back()->withErrors(["connection" => "Could not connect to the database. Please check your input."]);
}
}
不確定這是最好的方法,但是它至少可以讓您即時更改連接詳細信息。
另一方面,您可以避免更新現有內容,而實際上可以動態添加新的
config(['database.connections.'.$company->id => [
'driver' => 'mysql',
'host' => $company->host,
'username' => $company->username,
'password' => $company->password
]]);
//Using it
$clients = DB::connection($company->id)->select(...);
將聯接表方法用於具有一個數據庫存儲用戶的多數據庫
了解有關laravel連接表的更多信息點擊這里
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.