Перенос логики авторизации из ASP.NET Webforms в ASP.NET MVC3 - PullRequest
3 голосов
/ 08 мая 2011

Я начинаю миграцию приложения ASP.NET Webforms на ASP.NET MVC 3. Приложение имеет общедоступную область, доступную для всех пользователей (также анонимных пользователей), и несколько областей, которые доступны только аутентифицированным пользователям, которые в конкретной роли.

Проект WebForms организован так:

Root folder -> contains all public pages
 |
 --- Private subfolder -> contains a few pages for ALL authenticated users
      |
      --- Customers subfolder -> contains pages for users in role "Customer"
      --- Suppliers subfolder -> contains pages for users in role "Supplier"
      --- Internals subfolder -> contains pages for users in role "Internal"
           |
           --- Admins subfolder -> contains pages for users in role "Admin"
      etc.

В настоящее время авторизация управляется web.config файлами, которые находятся в разных подпапках. Например, подпапка Customers содержит следующее web.config:

<configuration>
    <system.web>
        <authorization>
            <allow roles="Customer" />
            <deny users="*" />
        </authorization>
    </system.web>
</configuration>

В ASP.NET Webforms больше конфигурации не требуется. Это разрешение применяется ко всем страницам в подпапке Customers.

Каков наилучший способ переноса этой структуры в ASP.NET MVC 3? Или более конкретно:

  • Такие web.config файлы с настройками авторизации все еще работают в MVC на основе папок?
  • Если нет, есть ли другой способ применить требования авторизации ко всем страницам в папке?
  • Можно ли по-прежнему организовывать различные области в отдельных папках, особенно можно ли поместить отдельные подпапки Controllers, Views, Models в каждую из папок Customers, Suppliers и т. Д., Чтобы сохранить всю логику и разметка близко друг к другу?

Спасибо за отзыв!

Ответы [ 2 ]

3 голосов
/ 08 мая 2011

Работают ли такие файлы web.config с настройками авторизации в MVC на основе папок

Они делают, но не должны использоваться.

Если нет, есть ли другой способ применить требования авторизации ко всем страницам в папке?

В ASP.NET MVC отсутствует понятие папок. Есть контроллеры, модели и виды. Есть также областей . Таким образом, вы можете создать область «Клиенты» и иметь базовый контроллер, от которого будут получены все контроллеры в этой области. Затем вы бы украсили этот базовый контроллер атрибутом [Authorize]. Таким образом, все производные контроллеры и действия потребуют авторизации пользователя для доступа к ним. Вы не обязаны использовать область для достижения этой цели. Вы можете по-прежнему иметь базовый контроллер в главной области, украшенный этим атрибутом, и иметь все контроллеры, для которых требуется аутентификация.

Вот сообщение в блоге , на которое вы можете взглянуть по поводу авторизации в ASP.NET MVC.

1 голос
/ 09 мая 2011

Поддерживаемый способ защитить приложение MVC - применить атрибут [Authorize] к каждому контроллеру и методу действия.

Вот ссылка на блог Microsoft Рик Андерсон Защита вашего приложения ASP.NET MVC 3

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...