2009-08-04 3 views
2

Я пишу приложение MVC, которое имеет две ветви, чтобы двигаться с самого начала. По пути авторизуется с помощью ПИН-кода, и я использую проверку подлинности форм для ограничения доступа к этому разделу кода. Однако другой путь примет вход в систему AD, и мне нужно, чтобы люди не переходили между ветвями, используя URL-адреса. Должен ли я использовать настраиваемую маршрутизацию или мне нужно создать два отдельных атрибута авторизации для ограничения доступа.MVC Routing vs. Authorization/Authorize Tag

Благодаря

ответ

2

Вы можете использовать роли справиться с этим с существующим AuthorizeAttribute. Просто поставите своих авторизованных пользователей AD на определенную роль, а затем на путях, требующих AD-logon, установите для Роли для этого контроллера/метода требуемую роль AD. Это повлечет за собой внедрение RoleProvider, которое может показаться несколько сложным, но на самом деле это не так уж плохо. Загрузите роли пользователя в файл cookie, чтобы вам не приходилось каждый раз искать их. Преимущество в том, что это будет масштабироваться до дополнительных ролей, так как ваше приложение становится более сложным.

В качестве альтернативы вы можете расширить существующий атрибут AuthorizeAttribute, переопределив OnAuthorization и использовать свою собственную версию. Этот атрибут может проверяться, чтобы убедиться, что не только разрешен запрос, но и что он имеет соответствующий тип учетных данных. Тип учетных данных можно сохранить в сеансе при входе в систему и получить оттуда для аутентифицированных пользователей. Это проще писать, но не масштабируется.