onauthorization mvc asp.net-mvc asp.net-mvc-3 authorization action-filter

asp.net-mvc - onauthorization - mvc redirect to login authorize



Extienda AuthorizeAttribute Override AuthorizeCore o OnAuthorization (2)

Usando ASP.NET MVC, estoy creando un atributo Autorizar personalizado para encargarme de alguna lógica de autorización personalizada. He analizado muchos ejemplos y es bastante directo, pero mi pregunta es ¿qué método es mejor anular, AuthorizeCore o OnAuthorization? He visto muchos ejemplos que anulan uno u otro. ¿Hay una diferencia?


Debe colocar cualquier código que se debe ejecutar independientemente de si el usuario está siendo autorizado por primera vez o si está utilizando una autorización en caché en AuthorizeCore .

Si observa el código fuente, puede ver que tanto OnAuthorize como OnCacheAuthorization OnAuthorize OnCacheAuthorization . Esto permite que la autorización se guarde en la memoria caché, pero aún permite ciertas acciones y toma las decisiones reales sobre la autorización.

Si necesita algo de AuthorizationContext, puede crear una propiedad para contener la información y luego acceder a ella en el método AuthorizeCore.


La clave está en los tipos de devolución:

AuthorizeCore devuelve un booleano, es un código de toma de decisiones . Esto debe limitarse a mirar la identidad del usuario y probar en qué roles se encuentran, etc. Básicamente debe responder a la pregunta:

Do I want this user to proceed?

No debe realizar actividades adicionales "en el lateral".

OnAuthorize devuelve nulo: aquí es donde pone cualquier funcionalidad que deba ocurrir en este punto. por ejemplo, escribir en un registro, almacenar algunos datos en sesión, etc.