Я работаю над мультитенантным приложением в CodeIgniter. Сессии обрабатываются надежно через базу данных. И user_id, и company_id хранятся в сеансе сервера, и большинство таблиц имеют поля company_id (который относится к полю id в таблице компаний) и поля user_id. Когда элемент сохраняется или обновляется в базе данных, company_id из сеанса автоматически добавляется к запросу и заполняется в базе данных.
Допустим, пользователь А имеет доступ как к CompanyA (company_id 1), так и к CompanyB (company_id 2). Он открывает CompanyA в своем браузере и открывает форму, чтобы сохранить новый продукт для этой компании. Непосредственно перед тем, как нажать «Сохранить», он открывает в браузере вторую вкладку и переключается на CompanyB. Это означает, что сеанс для company_id будет изменен на сервере. Теперь он возвращается к первой вкладке и нажимает сохранить - он думает, что сохраняет продукт для CompanyA, но на самом деле сеанс сервера изменился, и он сохраняется в CompanyB.
Я думаю, что это создание теории правильно. Если это так, как лучше обойти это? Единственный способ, о котором я могу подумать, - это использовать скрытое поле company_id в каждой отдельной форме.