Поэтому я пытаюсь понять, как работает мультитенантный подход к базе данных, но в некоторых местах я запутался. Я пытаюсь использовать его в Laravel и MySQL
Я понимаю, что у меня может быть база данных для каждого арендатора в моем приложении, поэтому, когда пользователь входит в систему, я могу просто проверить, какой это арендатор, и изменить соединение с БД, чтобы использовать его базу данных. Я предполагаю, что это так.
Но сейчас я начинаю путаться. Арендатор, который входит в приложение, сможет создавать пользователей и назначать им роли, что означает, что есть супер-администратор, который создает всех арендаторов, но также есть супер-администратор для конкретного арендатора, который создает пользователей для экземпляра сам арендатор.
Так что теперь, как я буду аутентифицировать пользователей в такой ситуации. Например, я могу аутентифицировать клиента, а затем изменить соединение с БД на соответствующую базу данных, но тогда мне придется войти в систему пользователя этого конкретного клиента, и как я буду поддерживать одновременное подключение двух объектов в сеансе?
Я предполагаю, что пакет мульти аутентификации (как Multi Auth) может помочь в этом, но так как я новичок в этом, я в основном размытый.
Я прыгаю, кто-то уже сталкивался с этой проблемой и, возможно, сможет мне помочь.
Сначала я предполагаю, что у вас есть веская причина иметь несколько баз данных, а не просто позволить всем вашим пользователям жить в одних и тех же таблицах. Обычно это происходит из-за того, что у вас приложение с большими объемами данных, ситуация с безопасностью или вы просто хотите иметь возможность легко отделять данные клиента в приложении, таком как CRM.
Во-вторых, если бы я использовал несколько баз данных, я бы по-прежнему полагался на Laravel для контроля доступа к базе данных. Laravel будет использовать учетные данные административного уровня во всех своих запросах, но в вашем приложении вы будете использовать уровень авторизации Laravel для управления доступом к определенным маршрутам и действиям.
Других решений пока нет …