2009-05-14 2 views
0

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

Что я хочу сделать, это создать маршрут, который будет префикс /Admin/ перед всеми URL-адресами, которые вызывают действие с атрибутом фильтра Authorize.

Возможно ли это сделать?

ответ

0

Да, все возможно, но я думаю, что вы хотите сказать, это легко сделать? И ответ нет. Что вам нужно сделать, это создать свой собственный маршрут, а затем добавить этот настраиваемый маршрут к сопоставлению маршрутов. Это непросто сделать, но проблема возникает в том, что маршруты инициализируются перед контроллером, поэтому вам придется обрабатывать поиск и анализировать себя, чтобы проверить ваши критерии.

Существует альтернативный вариант, вы можете попробовать использовать ActionMethodSelectorAttribute, который позволяет создавать пользовательские селектора для ваших Action Method и игнорировать те, которые не содержат атрибут Authorize. Примером этого атрибута является ActionVerbAttribute.

Самый простой способ - просто создать пользовательское расширение для Html.ActionLink, которое выполняет свои собственные проверки и сохраняет его как только для отображения, а затем создает двойные маршруты для одного и того же контроллера в вашем Global.asax.

 Смежные вопросы

  • Нет связанных вопросов^_^