Estoy creando una aplicación en la que hay gestión de módulos basada en roles y se cambia en cualquier momento y en cualquier momento. Guión:
- Si un usuario tiene acceso para crear y ver Empleado, un usuario solo puede crear y ver empleados, pero en el futuro el administrador cambia la función del usuario de crear y ver para ver y eliminar, de lo que un usuario solo puede hacer esa actividad.
Intento con, [Authorize(Roles ="Staff")]
pero si el administrador cambia el tiempo de ejecución, entonces no se administra.
¿Alguien puede investigar esto y volver a mí?
c#
asp.net-mvc
authentication
asp.net-core
Soni profundo
fuente
fuente
Authorize(Roles ="Staff")
se asegura de que el usuario con rolStaff
solo pueda acceder a esta acción ... Entonces, si el usuario es eliminado de este rol, el usuario no podrá acceder a este ... ¿No está sucediendo esto?Create Employee
,View Employee
y @Emad Sí, necesito cambios al momento del inicio de sesión si hay cambios durante la sesión en vivo, entonces no hay afectar en un papel. ¿Es posible?Respuestas:
Esta es una pregunta complicada y no hay una respuesta correcta, pero hay varias formas de hacerlo. Primero, supondré que está utilizando autenticación sin estado utilizando un jwt basado en notificaciones. La forma más simple es escribir su propia Política que leerá los roles de los usuarios antes de cada solicitud, esta es la forma más sencilla de hacerlo y la más rápida de implementar.
Pero esta solución no es tan eficaz porque requiere una llamada a la base de datos en cada solicitud. Esto está bien en cargas pequeñas pero puede crear problemas en el tráfico. La otra forma es volver a invocar todos los tokens de usuario cuando cambian los roles, pero esto es muy complicado. Estoy seguro de que si crea una tienda de acceso rápido para roles como redis, no habrá problemas para verificar cada llamada. Además, no recomiendo crear su propio almacenamiento de usuario porque es una pesadilla mantener y mantenerse actualizado en lo que respecta a los estándares de seguridad.
fuente
IDocumentRepository
no puedo usar. me muestra que instale UmbracoCMS. ¿Puedes por favor averiguarlo?Si está utilizando Sesión / Cookie para almacenar los detalles del usuario conectado, puede vaciar los detalles cada vez que el Administrador realice cambios de rol. En cada acción puede verificar el rol en Sesión / Cookie y avanzar. Ahora, tan pronto como el usuario haga clic en cualquier lugar de la pantalla que golpee el controlador. Se comprobará la condición y se cerrará la sesión del Usuario cuando el objeto Sesión / Cookie esté vacío.
fuente