net authorizeattribute asp .net asp.net-mvc authentication asp.net-mvc-5

.net - authorizeattribute - http basic authentication c#



¿Cuál es el propósito de IAuthenticationFilter.OnAuthenticationChallenge() (1)

Fuente

"MVC Framework llama al método OnAuthenticationChallange cada vez que una solicitud ha fallado las políticas de autenticación o autorización para un método de acción. El método OnAuthenticationChallenge se pasa un objeto AuthenticationChallengeContext , que se deriva de la clase ControllerContext"

Entonces, un ejemplo práctico sería:

1 - Establece su filtro de autorización personalizado

2 - los usuarios no pueden autorizar el método

3 - Se llama al método OnAuthenticationChallenge .

Tengo una implementación personalizada de IAuthenticationFilter registrada en RegisterGlobalFilters() . En mi proyecto, presencio la siguiente secuencia de llamadas:

  1. IAuthenticationFilter.OnAuthentication
  2. autorización (si la hay)
  3. acción del controlador
  4. IAuthenticationFilter.OnAuthenticationChallenge

¿Por qué ocurre después de la acción del controlador? De esta publicación en el blog leí

La clave para recordar es que OnAuthenticationChallenge no se ejecuta necesariamente antes que cualquier otro filtro de acción. Se puede ejecutar en varias etapas.

¿Cómo puede ser útil si no podemos decir cuándo exactamente se llama?