Мультиарендное SaaS
Вопрос
Спроектируй фронтенд SaaS, где у каждой компании свои данные, роли и оформление.
Веди разговор вслух, как на секции. Начинать с решения - главная ошибка: первые полторы минуты только вопросы.
Попробуйте сами
Ответьте вслух за 2 минуты, как на собесе. Потом сверьтесь с тезисами: что прозвучало, а что нет.
Показать ответ и разбор
Коротко
Что должно прозвучать в ответе
уточнил модель: поддомены, путь или выбор организации после входа
область видимости берётся из сессии, а не из параметра запроса
переключение организации сбрасывает кэш запросов целиком
роли и права: интерфейс скрывает, но решает всегда сервер
оформление под клиента - токенами, а не отдельной сборкой
тарифы и лимиты: гейт на создание и на показ - это разные проверки
изоляция кэша и хранилища между организациями
что видит пользователь, состоящий в нескольких организациях
Что могут спросить следом
- Что произойдёт при переключении организации, если не сбросить кэш?
- Как сделать оформление под клиента без отдельной сборки?
- Где обычно протекает изоляция арендаторов?
Разбор
Самое важное произносится первым: идентификатор организации никогда не приходит параметром от клиента. Он берётся из сессии. Иначе подмена в адресной строке открывает чужие данные - это утечка между клиентами, самый дорогой класс ошибок.
Тут стоит рассказать грабли из практики: проверки прав в гвардах выполняются до подстановки области видимости, и запрос внутри такой проверки уходит без фильтра. Заметно не сразу, а последствия максимальные.
Переключение организации обязано сбрасывать весь кэш запросов: иначе в новой компании покажутся данные прошлой. Это же касается локального хранилища - ключи с идентификатором организации.
Права: интерфейс прячет кнопки ради удобства, но решение всегда за сервером. Спрятанная кнопка - не защита.
Оформление под клиента - переменными CSS, а не отдельной сборкой на каждого.
И тарифы: лимит на создание и лимит на показ - разные проверки, и путают их регулярно.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.