我有一个为公司建立的标准Laravel应用程序。我现在把它变成了SAAS模型,但好奇最好的设置。我知道我肯定会希望每家公司都有自己的安全数据库,更容易获得特定的客户数据,因为这些都是竞争公司,它可能只是一个更好的卖点。
我的问题是如何设置DB和子域以指向他们的特定数据库和应用程序设置,但我真的不想要100个子域,而对于iOS应用程序,我需要一个用户身份验证门户。< / p>
是否有一种特定的方法来拥有一个包含所有laravel用户的数据库,并在登录时将它们提供给他们的特定数据库?基本上我只需要一个门户(auth位置)。
我知道这是通用的,但不确定在哪里发布这个或搜索什么。
设定:
用户db(标准laravel设置)
User | Password Reset | Migrations | Roles
公司一个数据库
accounts | routes
公司b db
accounts | routes
答案 0 :(得分:0)
您的应用程序有一个默认数据库。那是用户进行身份验证的地方。然后,每个公司都将其数据库详细信息存储在主数据库中。只要有人进行身份验证,您就会获取数据库详细信息并将其设置为默认值。
unordered_map
不确定它是最好的方法,但它可以让您至少动态更改连接详细信息。
另一方面,您可以避免更新现有的并实际添加新的
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."]);
}
}
答案 1 :(得分:0)
对多个数据库使用连接表方法,一个数据库存储用户
详细了解laravel join table Click here