фонПолучение RouteData в конструктору контроллере/атрибуты маршрута [Авторизоваться] s ConnectionString
У меня есть приложение, которое Многоквартирное использует несколько баз данных за арендатор. Я использую CodeFirstMembership, поэтому у меня есть полный контроль над реализацией SimpleMembership. Оба моих объекта User/Role находятся в том же DbContext, что и остальная часть моего приложения.
Проблема
Для облегчения мульти-tenance, у меня есть собственный маршрут, который выглядит точно так же, как и то, что маршрут ваниль MVC по умолчанию выглядит, за исключением того, что я захватить поддомен, проверки это против арендаторов, у которых есть учетная запись, и захватить их конкретную строку соединения. У меня есть метод расширения в RouteData, который называется .GetSubdomain(), который вернет используемый субдомен, поэтому я действительно могу выполнить проверку и получить строку соединения везде, если это поможет вам с ответом.
Мне нужен мой членский провайдер, чтобы иметь возможность получить доступ к информации проверки поддомена, чтобы указать правильную базу данных для правильной работы [Авторизовать].
То, что я пытался
- Инициализация поставщика членства в InitializeSimpleMembershipAttribute
- Это не сработало, потому что вы не можете передать в динамических параметров в атрибуты (например, RouteData. GetSubdomain())
- Инициализация членства в constr uctor.
- Хотя вы можете вызвать методы RouteData в конструкторе и создать/запустить приложение, RouteData не был заполнен в точке конструктора контроллера, поэтому этот метод также не работал.
- Я не пробовал это, но добавление проверки в начале каждого метода контроллера, вероятно, не сработает, поскольку авторизация уже выполнена.
Итак ... Из того, что я пробовал, мне кажется, что мне нужно подключить в точке между где RouteData заполняется и фактической авторизации. Могу ли я сделать это эффективно?
Спасибо!