Как использовать один поставщик членства по умолчанию для двух областей? - PullRequest
2 голосов
/ 01 ноября 2011

Я создаю интернет-магазин в MVC 3. Он использует провайдера членства по умолчанию для проверки, поэтому пользователи должны сначала зарегистрироваться / войти, прежде чем они смогут совершить покупку.Это отлично работает.Сейчас я создаю область администратора для управления всеми продуктами, категориями и всеми выпадающими значениями, используемыми в формах.Для этого администратор должен войти в систему. Предпочтительно я хочу использовать тот же поставщик членства.Какова лучшая практика для этого?Я попытался поместить отдельный AccountController и представления в область администратора, но когда я перехожу к ... / admin, он перенаправляет меня на страницу входа в интернет-магазине вместо области администратора.Можно ли использовать только 1 AccountController в корневом каталоге проекта, а затем оценить RouteData и вернуть правильное представление входа в систему из представлений административной области?или это «не сделано».

Я хотел бы сделать это самым лучшим и чистым способом.

Спасибо

1 Ответ

3 голосов
/ 02 ноября 2011

Нет необходимости использовать два контроллера учетных записей, ведь они будут иметь одинаковую логику.

Вы можете использовать поставщика ролей и настроить доступ к областям на основе ролей.

[Authorize(Roles = "Administrators")]
public class AdminController : Controller
{
}

Редактировать:

Чтобы использовать разные макеты, внутри _ViewStart.cshtml вашей административной области или внутри представления, которое использует административная область AccountController, вам необходимо указать, какой макет вы используете.Вы будете использовать:

@{
    Layout = "~/Areas/Admin/Views/Shared/_AdminLayout.cshtml";
}

Что касается перенаправлений, проверьте маршрутизацию внутри AdminAreaRegistration.cs, а также убедитесь, что вы перенаправляете на контроллер области:

return RedirectToAction("LogOn", "Admin", new { area = "Admin" });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...