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.