2

фонПолучение RouteData в конструктору контроллере/атрибуты маршрута [Авторизоваться] s ConnectionString

У меня есть приложение, которое Многоквартирное использует несколько баз данных за арендатор. Я использую CodeFirstMembership, поэтому у меня есть полный контроль над реализацией SimpleMembership. Оба моих объекта User/Role находятся в том же DbContext, что и остальная часть моего приложения.

Проблема

Для облегчения мульти-tenance, у меня есть собственный маршрут, который выглядит точно так же, как и то, что маршрут ваниль MVC по умолчанию выглядит, за исключением того, что я захватить поддомен, проверки это против арендаторов, у которых есть учетная запись, и захватить их конкретную строку соединения. У меня есть метод расширения в RouteData, который называется .GetSubdomain(), который вернет используемый субдомен, поэтому я действительно могу выполнить проверку и получить строку соединения везде, если это поможет вам с ответом.

Мне нужен мой членский провайдер, чтобы иметь возможность получить доступ к информации проверки поддомена, чтобы указать правильную базу данных для правильной работы [Авторизовать].

То, что я пытался

  • Инициализация поставщика членства в InitializeSimpleMembershipAttribute
    • Это не сработало, потому что вы не можете передать в динамических параметров в атрибуты (например, RouteData. GetSubdomain())
  • Инициализация членства в constr uctor.
    • Хотя вы можете вызвать методы RouteData в конструкторе и создать/запустить приложение, RouteData не был заполнен в точке конструктора контроллера, поэтому этот метод также не работал.
  • Я не пробовал это, но добавление проверки в начале каждого метода контроллера, вероятно, не сработает, поскольку авторизация уже выполнена.

Итак ... Из того, что я пробовал, мне кажется, что мне нужно подключить в точке между где RouteData заполняется и фактической авторизации. Могу ли я сделать это эффективно?

Спасибо!

ответ

1

WOW. При полном контроле я не смог увидеть ActionExecutingContext, который передавался в атрибут InitializeSimpleMembership. Контекст, передаваемый в действительности, содержит RouteData и информацию о субдомене, необходимую для правильной инициализации членства!

 Смежные вопросы

  • Нет связанных вопросов^_^