Hay muchas preguntas (e información) sobre la configuración de miembros de asp.net, proveedores de funciones y similares. Independientemente de si debe usar la plataforma integrada proporcionada por microsoft, o ampliar las clases base y el rol propio.Cómo gestionar mejor los permisos (no roles) en la membresía de asp.net, específicamente en ASP.NET MVC
He decidido extender los proveedores predeterminados e implementar mi propia membresía y proveedores de roles. Ahora mi pregunta es específicamente sobre la autenticación de roles.
Tradicionalmente, crearía roles como 'Administrador, Administrador, Empleado, Superusuario' o lo que sea que tenga. Pero, ¿qué haría/debería hacer con respecto a los permisos que considero que son un control más fino? Permítanme elaborar ...
Dentro de mi sitio asp.net mvc tengo diferentes áreas como administración, administración, mensajería, informes, etc. Me gustaría crate roles para cada uno de estos como 'Administrador', 'Administrador', ' Reportero, etc. Sin la función adecuada, no puede obtener acceso a esa área del sitio. Así que bloquearía todos los controladores con esto en el nivel de clase.
Pero ahora tome un área como ejemplo; mensajes, y dicen que quería tener permisos de grano más finos para CRUD; crear un mensaje, ver/leer mensajes, editar mensajes, eliminar mensajes, etc.
Finalmente mi pregunta. ¿Cómo sería mejor implementar este grano de control más fino? Un enfoque que veo (no estoy seguro de si es bueno) es simplemente crear roles de membresía asp.net para todo. Así que podría tener ....
Messenger (rol de nivel amplio), CreateMessage, ReadMessage, EditMessage, DeleteMessage.
Por un lado, me gustaría que algunos usuarios puedan leer/ver mensajes. Pero no necesariamente los crea o borra. Las acciones individuales del controlador podrían tener los roles específicos aplicados.
¿Ve algún problema con este enfoque? Tienes una mejor idea?
Solución hasta ahora
he decidido crear mi propio esquema e implementar suscripciones personalizado y proveedores de papel. Mi esquema incluye;
- usuario
- PerfilUsuario
- Permiso
- PermissionAssignment
- papel
- RoleAssignment
Yendo a estar fuera durante un día o dos, pero se actualizará con más información cuando Tengo una oportunidad.
¿Es posible llevar eso un poco más allá y decir no solo "se permite esta acción?" pero decir "¿se permite esta acción en esta entidad en particular?" p.ej. la situación ¿David Robbins señala que el administrador A no puede eliminar los mensajes creados por el administrador B? –
ese escenario particular puede ser manejado por la Acción, pero la lógica real de Authorize y ActionResult cambiará un poco, un queston relacionado anterior mostrará cómo puede archivar eso, http: //stackoverflow.com/questions/2872588/asp- net-mvc-authorization-permission-to-use-model-classes/2878159 # 2878159 – JOBG
Gracias Omar, he estado trabajando un poco más en esto y lo actualizaré cuando tenga más información acerca de dónde estoy. Aclamaciones. –