簡體   English   中英

Laravel多數據庫,一個數據庫存儲用戶

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM