Я довольно новичок в ASP.NET MVC и пытаюсь понять глобальные фильтры аутентификации и анонимный доступ.
У меня есть собственный AuthenticationFilter:
public class CustomAuthenticationAttribute : ActionFilterAttribute, IAuthenticationFilter
{
public void OnAuthentication(AuthenticationContext filterContext)
{
//Do some stuff
}
public void OnAuthenticationChallenge(AuthenticationChallengeContext filterContext)
{
var user = filterContext.HttpContext.User;
if (user == null || !user.Identity.IsAuthenticated)
filterContext.Result = new HttpUnauthorizedResult();
}
}
... и я добавил его в свой FilterConfig.cs, чтобы стать глобальным, так:
filters.Add(new CustomAuthorizationAttribute());
Когда приложение загружается, оно застревает в круговом цикле - страница входа просто перенаправляет.
Страница входа имеет атрибут AllowAnonymous. AllowAnonymous пропускает шаг AuthorizationAttribute, поэтому вполне понятно, что он не влияет на фильтр аутентификации.
Мои вопросы:
1) Если область проверки подлинности предназначена для проверки пользователя, то вместо этого AllowAnonymous должен пропустить шаг AuthenticationFilter? После того, как вы прошли аутентификацию, вы больше не анонимны ... пожалуйста, кто-нибудь может объяснить, что мне не хватает?
2) Если я хочу заблокировать сайт, я на правильном пути, чтобы иметь глобальный фильтр аутентификации? Если да, как мне выйти из этого бесконечного цикла и разрешить показ страницы входа?
Спасибо!