Атрибут MVC Authorize только для версии выпуска - PullRequest
3 голосов
/ 20 января 2012

Можно ли украсить класс с помощью

[Authorize(Roles = "Admin")]

Но применимо ли это только при сборке приложения в режиме выпуска?

Таким образом, в режиме отладки авторизация не применяется, и вы можете попасть на страницы администратора без необходимости входа в систему.

Мои экраны администратора не требуют никакой специальной информации о пользователе, только вне зависимости от того, вошли вы в систему или нет.

Ответы [ 2 ]

8 голосов
/ 20 января 2012

Один из способов - создать собственный атрибут Authorize и затем использовать #if DEBUG следующим образом:

public class SwitchableAuthorizationAttribute : AuthorizeAttribute
{
protected override bool AuthorizeCore(HttpContextBase httpContext)
{
    bool disableAuthentication = false;

    #if DEBUG
    disableAuthentication = true;
    #endif

    if (disableAuthentication)
        return true;

    return base.AuthorizeCore(httpContext);
}
}

скопировано отсюда: http://www.diaryofaninja.com/blog/2011/07/24/writing-your-own-custom-aspnet-mvc-authorize-attributes

1 голос
/ 20 января 2012

Вы можете установить директивы компилятора:

 #if DEBUG
  //Add code here
  #else
  //add code here
  #endif

Но я не уверен, что они будут работать с атрибутами метаданных. Вы также можете создать свой собственный фильтр авторизации, унаследовав от того, который включен в MVCm, переопределить метод валидации, а затем включить код, который я выделил, в качестве аудита части, чтобы обойти его в режиме отладки, просто никогда не компилировать в DEBUG и не развертывать его.

Вы также можете проверить, подключен ли отладчик в ваш пользовательский фильтр авторизации:

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