2

背景獲得的RouteData在控制器的構造/屬性來路由[授權]的的ConnectionString

我有一個使用每個租戶多個數據庫多租戶應用。我使用的是CodeFirstMembership,所以我完全控制了SimpleMembership實現。我的用戶/角色實體都與我的應用程序的其餘部分處於相同的DbContext中。

的問題

爲了方便多tenance,我有一個看起來完全一樣,什麼默認香草MVC路線的樣子,與我搶的子站點例外,檢查一個自定義路由它針對擁有帳戶的租戶,並抓住他們特定的連接字符串。我在RouteData上有一個名爲.GetSubdomain()的擴展方法,它將返回所使用的子域,所以我可以真正做檢查並在任何地方獲取連接字符串,如果這有助於您的答案。

我需要我的成員資格提供程序才能訪問子域檢查信息,以便指向[Authorize]方法正確工作的正確數據庫。

我已經試過

  • 初始化成員提供的InitializeSimpleMembershipAttribute
    • 這並沒有工作,因爲你不能在動態參數傳遞到屬性(如的RouteData。 GetSubdomain())
  • 初始化構造中的成員資格uctor。
    • 雖然您可以在構造函數中調用RouteData方法並讓應用程序生成/運行,但是RouteData尚未在控制器的構造函數中填充,因此此方法也不起作用。
  • 我沒有嘗試過,但是在每個控制器方法的開始處添加檢查可能不起作用,因爲授權已經運行。

所以... 出了什麼我已經試過,好像我需要掛接到其中的RouteData填充與實際授權之間的點。有一點我可以有效地做到這一點?

謝謝!

回答

1

WOW。在全面監督下,我沒有看到ActionExecutingContext被傳遞給InitializeSimpleMembership屬性。傳入的上下文實際上包含RouteData以及正確初始化成員資格所需的子域信息!