ASP.Net MVC на членство в области - PullRequest
3 голосов
/ 30 апреля 2010

Я создаю приложение ASP.Net MVC, которое будет работать на учетной записи общего хостинга для размещения нескольких доменов. Я начал с шаблона по умолчанию, который включает членство, и создал область MVC для каждого домена. Маршрутизация настроена так, чтобы указывать на правильную область в зависимости от домена, для которого предназначен запрос. Теперь я хотел бы настроить членство для каждой области MVC. Сначала я попробовал очевидное и попытался переопределить раздел web.config для каждой области, чтобы изменить атрибут applicationName поставщика. Это не работает, так как область не настроена как корень приложения. Существует ли простой способ разделения пользователей для каждой области?

1 Ответ

2 голосов
/ 01 мая 2010

Я думаю, что у меня есть рабочее решение, которое держит каждую область совершенно отдельно. Используя шаблон по умолчанию в качестве отправной точки, я добавил еще один конструктор в класс MvcApplication1.Models.AccountMembershipService для принятия строки (также изменил существующие конструкторы для устранения неоднозначности).

    public AccountMembershipService()
    {
        _provider = Membership.Provider;
    }

    public AccountMembershipService(MembershipProvider provider)
    {
        _provider = provider ?? Membership.Provider;
    }

    public AccountMembershipService(string applicationName)
        : this()
    {
        _provider.ApplicationName = applicationName;
    }

Затем я скопировал AccountController в каждую область и изменил перегрузку Initialize, чтобы включить имя области из данных маршрута.

    protected override void Initialize(RequestContext requestContext)
    {
        if (FormsService == null) { FormsService = new FormsAuthenticationService(); }            
        if (MembershipService == null) { MembershipService = new   AccountMembershipService(requestContext.RouteData.DataTokens["area"].ToString()); }

        base.Initialize(requestContext);
    }

Теперь каждая область регистрируется как новое приложение с проверкой подлинности с помощью форм, и все пользователи и роли должны храниться отдельно.

...