отключить атрибут авторизации в asp.net mvc по конфигурации - PullRequest
0 голосов
/ 14 сентября 2018

Для отладки pourpose я пытаюсь отключить атрибут [Authorize] на контроллере по конфигурации (web.config)

, поэтому я добавил это в web.config

<location path="ListaRichieste">
    <system.web>
      <authorization>
        <allow users="*" />
      </authorization>
    </system.web>
  </location>

в то время как имя моего контроллера "ListaRichiesteController"

, похоже, это не сработает, поэтому пункты:

  • имеет ли конкретный путь конфигурации безопасности приоритет перед атрибутом [Authorize]?
  • является правильным?
  • как можно отключить (временно) защиту контроллера без изменения кода контроллера (у меня много контроллеров, я работаю в псевдо-микросервисной архитектуре)
  • переопределить атрибут [Authorize] пользовательским атрибутом не является приемлемым вариантом для меня, потому что тогда мне нужно добавить этот пользовательский атрибут в каждый проект, который содержит контроллер

    .добиться этого путем настройки или ограничения воздействия на код каждого контроллера / проекта / микросервиса

1 Ответ

0 голосов
/ 14 сентября 2018

Вы не можете переопределить этот атрибут конфигурацией, лучший способ в вашем случае - вручную добавить зарегистрированного пользователя в HttpContext.User.Вы можете сделать это в своем файле запуска с #if DEBUG.

Примерно так будет работать:

var username = "yourUsername";

GenericIdentity MyIdentity = new GenericIdentity(username ,AuthenticationTypes.Password); 
ClaimsIdentity objClaim = new ClaimsIdentity(AuthenticationTypes.Password, System.IdentityModel.Claims.ClaimTypes.Name, "Recipient");

objClaim.Claims.Add(new Claim(System.IdentityModel.Claims.ClaimTypes.Name, username));
objClaim.Claims.Add(new Claim(ClaimTypes.Name, username));
objClaim.Name = username; 

GenericPrincipal MyPrincipal = new GenericPrincipal(objClaim, new string[0]);
IPrincipal Identity = (IPrincipal)MyPrincipal; 

Thread.CurrentPrincipal = HttpContext.User = Identity;

Возможно, это не самый безопасный и не лучший способ, но этовероятно, самый подходящий в вашем случае.

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