Гибкая динамическая маршрутизация для многопользовательской архитектуры MVC 3 - PullRequest
1 голос
/ 02 февраля 2012

Я хочу создать мультитенантный веб-сайт, где каждый арендатор может создавать несколько порталов. похоже на то, что делает Dotnetnuke. Я хочу обеспечить гибкую динамическую маршрутизацию (которая может вступить в силу во время выполнения, например, Я могу добавить арендатора во время выполнения), как описано ниже. Я также хотел бы разрешить / ограничить арендаторов для определенных модулей (Области (группа контроллеров) для крупнозернистого контроля доступа или контроллеров для мелкозернистого контроля доступа) и Контроллеры Действия для лучшего контроля доступа.

  • Арендатору не принадлежит домен или поддомен - используется имя домена хоста SaaS)

    tenant1.saasplatform.com ( implicitly means has /portal0 suffix )
    tenant1.saasplatform.com/portal0
    tenant1.saasplatform.com/portal1
    
    saasplatform.com/tenant1  ( implicitly means has /portal0 suffix )
    saasplatform.com/tenant1/portal0
    saasplatform.com/tenant1/portal1
    
  • Арендатору принадлежит домен или поддомен)

    tenant1.com ( implicitly means has /portal0 suffix )
    tenant1.com/portal0
    tenant1.com/portal0
    
    tenant1.com  ( implicitly means has portal0. prefix )
    portal0.tenant1.com
    portal1.tenant1.com
    

Учитывая различные комбинации, я хочу извлечь ключ клиента на основе конфигурации для каждого клиента. Я также хочу извлечь номер портала (это может быть уникальный номер портала или уникальное имя).

Все после номера портала будет разрешено с помощью нормальных значений маршрутизации {controller}/{action}

tenant1.com[/portal0] Содержимое «[]» в скобках необязательно, и оно будет рассматриваться как «portal0»

{tenantkey}{portal0}

tenant1.saasplatform.com[/portal0] 
{tenantkey}.saasplatform.com}{portal0}
{tenantkey}.othersaasplatform.com}{portal0}

[portal0.]tenant1.com
{portalkey}.{tenantkey}

Некоторые хорошие идеи показаны ниже. Статья довольно старая. Мне было интересно, есть ли что-то новое в MVC 3?

http://blog.maartenballiauw.be/post/2009/05/20/ASPNET-MVC-Domain-Routing.aspx

Специфичные для арендатора маршруты для динамически загружаемых модулей

1 Ответ

0 голосов
/ 02 февраля 2012

Если содержимое каждого портала выбирается из базы данных, лучше всего подключиться к точке расширения. http://www.simple -talk.com / содержание / article.aspx? Статья = 1358

...