2014-01-27 3 views
0

Я использую Fluent Security в приложении MVC5. Я создал пользовательскую политику под названием RequirePortalRole(). Для целей тестирования я и всегда возвращаю успех.Свободная безопасность Индивидуальная политика

Моя конфигурация безопасности заключается в следующем

  configuration.ForAllControllers().DenyAnonymousAccess(); 
      configuration.For<AccountController>(x => x.LogOn()).Ignore(); 
      configuration.For<HomeController>().AddPolicy(new RequirePortalRole()); 

С RequiredPortalRole() Всегда возвращает PolicyResult.CreateSuccessResult (это); я бы ожидал, что я могу получить доступ к чему-либо на домашнем контроллере, но ничего другого, кроме действия LogOn в контроллере учетных записей. По-видимому, настраиваемая политика перестает соответствовать политике ForAllController.

Любая идея, почему бы и нет? Действительно ли я применяю две политики к HomeController?

ответ

2

Политики добавляются, и каждый из них применяется для каждого запроса. Я думаю, что если вы хотите, чтобы получить доступ ко всему на HomeController вы должны удалить в явных политиках:

 configuration.For<HomeController>() 
      .RemovePolicy<DenyAnonymousAccessPolicy>() 
      .AddPolicy<RequirePortalRole>(); 

Я надеюсь, что я получил свой вопрос прямо.

+0

Я могу подтвердить, что предлагает @Hernan, это правильное решение. –

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