En este momento, decoro un método como este para permitir que los "miembros" accedan a la acción de mi controlador
[Authorize(Roles="members")]
¿Cómo permito más de un rol? Por ejemplo, lo siguiente no funciona, pero muestra lo que estoy tratando de hacer (permitir el acceso de "miembros" y "administrador"):
[Authorize(Roles="members", "admin")]
asp.net-mvc
controller
roles
codette
fuente
fuente
Respuestas:
Otra opción es usar un solo filtro de autorización como lo publicó pero eliminar las citas internas.
fuente
Si desea utilizar roles personalizados, puede hacer esto:
CustomRoles
clase:Uso
Si tiene pocos roles, tal vez pueda combinarlos (por claridad) de esta manera:
Uso
fuente
Una posible simplificación sería la subclase
AuthorizeAttribute
:Uso:
Semánticamente es lo mismo que la respuesta de Jim Schmehil.
fuente
Para MVC4, usando un
Enum
(UserRoles
) con mis roles, uso una costumbreAuthorizeAttribute
.En mi acción controlada, hago:
Y uso una costumbre
AuthorizeAttribute
como esa:Esto es parte de FNHMVC modificado por Fabricio Martínez Tamayo https://github.com/fabriciomrtnz/FNHMVC/
fuente
Otra solución clara, puede usar constantes para mantener la convención y agregar múltiples atributos [Autorizar]. Mira esto:
Luego en el controlador:
fuente
Authorize
atributos múltiples emplean la semántica AND y requieren que se cumplan TODAS las condiciones (es decir, el usuario debe estar en los roles de administrador e invitado).Si te encuentras aplicando esos 2 roles a menudo, puedes envolverlos en su propia Autorización. Esto es realmente una extensión de la respuesta aceptada.
Y luego aplique su nueva autorización a la Acción. Creo que esto se ve más limpio y se lee fácilmente.
fuente
Mejor código al agregar una subclase
AuthorizeRole.cs
Como usar esto
fuente
Usando AspNetCore 2.x, tienes que ir un poco diferente:
solo úsalo así:
fuente
fuente