2010-06-04 3 views
4

Я использую проверку подлинности форм в своем приложении ASP.NET MVC. Я хочу перейти на страницу регистрации из процесса авторизации. Я знаю, что я могу добавить тег местоположения в свой основной файл web.config или создать новый web.config внутри конкретной папки. Но я просто исключаю одно конкретное действие в пользовательском контроллере. Как мне это сделать?Исключение действия от авторизации в ASP.NET MVC 2

ответ

0

Хорошо, у меня это есть.

Что я сделал, я создал отдельный контроллер для этого действия и добавил элемент местоположения в свой web.config, чтобы разрешить анонимный доступ к этому действию.

Это позволит всем доступ к этому контроллеру без аутентификации.

1

Вы также можете создать свой собственный атрибут AllowWithoutAuthorisation и украсить его ActionResult.

EDIT Это непроверено, но вы не могли этого сделать;

[Authorize(Users="*")] 

EDIT 2

Или вы могли бы украсить каждый ActionResult с [Авторизоваться] и ommit тот, который вы хотите, чтобы не было разрешено.

+0

Ни одна из этих функций не работает, поскольку атрибут Authorize на контроллере работает даже после запуска Action. – bmavity

+1

Я использовал '[AllowAnonymous]' – Jeremy

4

Не используйте Web.config < местоположение > авторизация в приложении MVC. Это приведет к уязвимостям безопасности на вашем веб-сайте.

Вместо этого используйте атрибут [Авторизовать], чтобы контролировать, кто имеет доступ к определенным контроллерам или действиям. (Вы можете использовать [Авторизовать] атрибут типа А контроллера, если вы хотите применить ко всем действиям в этом контроллере.)

Дополнительная информация:

+0

Разве нет «хорошего» способа управлять этими правилами авторизации, кроме компиляции их на веб-сайт? Я хотел бы иметь возможность настраивать правила без необходимости повторного развертывания приложения. –

+0

см. Http://blogs.msdn.com/b/rickandy/archive/2012/03/23/securing-your-asp-net-mvc-4-app-and-the-new-allowanonymous-attribute.aspx для версия MVC 4 комментариев Леви – RickAndMSFT

2

Try this slick way to do it.

Он добавляет возможность исключить фильтры уровня контроллера из действия.

[ExcludeFilter(typeof(AuthorizeAttribute)] 
public ActionMethod DontAuthorize..... 

Гораздо проще!

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